Tài nguyên đang được tải lên... tải...

Chiến lược tín hiệu ngắn dài dựa trên QQE và RSI

Tác giả:ChaoZhang, Ngày: 2024-05-27 15:17:45
Tags:RSIQQE

img

Tổng quan

Chiến lược này dựa trên chỉ số QQE và chỉ số RSI. Nó tính toán mức trung bình động mịn và phạm vi dao động động của chỉ số RSI để xây dựng khoảng thời gian tín hiệu ngắn dài. Khi chỉ số RSI phá vỡ đường ray trên, nó tạo ra một tín hiệu dài, và khi nó phá vỡ đường ray dưới, nó tạo ra một tín hiệu ngắn. Ý tưởng chính của chiến lược là sử dụng các đặc điểm xu hướng của chỉ số RSI và các đặc điểm biến động của chỉ số QQE để nắm bắt những thay đổi trong xu hướng thị trường và cơ hội biến động.

Nguyên tắc chiến lược

  1. Tính toán trung bình di động RsiMa của chỉ số RSI như cơ sở để đánh giá xu hướng.
  2. Tính toán giá trị sai lệch tuyệt đối AtrRsi của chỉ số RSI và trung bình động MaAtrRsi của nó như cơ sở để đánh giá biến động.
  3. Tính toán phạm vi dao động động dα theo yếu tố QQE, và kết hợp nó với RsiMa để xây dựng các khoảng tín hiệu dài ngắn băng tần dài và băng tần ngắn.
  4. Đánh giá mối quan hệ giữa chỉ số RSI và khoảng thời gian tín hiệu dài ngắn. Khi chỉ số RSI vượt qua trên băng tần dài, nó tạo ra một tín hiệu dài, và khi nó vượt qua dưới băng tần ngắn, nó tạo ra một tín hiệu ngắn.
  5. Thực hiện giao dịch theo các tín hiệu dài ngắn. Khi một tín hiệu dài được kích hoạt, mở một vị trí dài, và khi một tín hiệu ngắn được kích hoạt, đóng vị trí.

Ưu điểm chiến lược

  1. Nó kết hợp các đặc điểm của chỉ số RSI và chỉ số QQE, có thể nắm bắt tốt hơn xu hướng thị trường và cơ hội biến động.
  2. Nó sử dụng phạm vi dao động năng động để xây dựng các khoảng tín hiệu, có thể thích nghi với những thay đổi trong biến động thị trường.
  3. Nó làm mượt chỉ số RSI và phạm vi biến động, giảm hiệu quả nhiễu nhiễu và giao dịch thường xuyên.
  4. Logic là rõ ràng, với ít thông số hơn, và phù hợp để tối ưu hóa và cải thiện hơn nữa.

Rủi ro chiến lược

  1. Đối với các thị trường biến động và thị trường biến động thấp, hiệu suất của chiến lược này có thể không phải là lý tưởng.
  2. Nó thiếu một cơ chế dừng lỗ rõ ràng và có thể phải đối mặt với rủi ro rút vốn lớn hơn khi thị trường đột ngột đảo ngược.
  3. Cài đặt tham số có tác động lớn hơn đến hiệu suất chiến lược và cần phải được điều chỉnh theo các thị trường và giống khác nhau.

Hướng dẫn tối ưu hóa chiến lược

  1. Thiết lập các cơ chế dừng lỗ rõ ràng, chẳng hạn như dừng lỗ tỷ lệ phần trăm cố định, dừng lỗ ATR, v.v., để kiểm soát rủi ro rút vốn.
  2. Tối ưu hóa cài đặt tham số. Sự kết hợp tham số tối ưu có thể được tìm thấy thông qua các thuật toán di truyền, tìm kiếm lưới và các phương pháp khác.
  3. Xem xét việc giới thiệu các chỉ số khác như khối lượng giao dịch và khối lượng vị trí để làm phong phú các tín hiệu giao dịch và cải thiện sự ổn định của chiến lược.
  4. Đối với các thị trường biến động, hãy xem xét việc giới thiệu giao dịch phạm vi hoặc logic giao dịch xoay để tăng khả năng thích nghi của chiến lược.

Tóm lại

Chiến lược này xây dựng các tín hiệu ngắn dài dựa trên chỉ số RSI và chỉ số QQE, và có các đặc điểm nắm bắt xu hướng và nắm bắt biến động. Logic chiến lược rõ ràng, với ít tham số hơn, và phù hợp để tối ưu hóa và cải thiện hơn nữa. Tuy nhiên, chiến lược cũng có một số rủi ro nhất định, chẳng hạn như kiểm soát rút và thiết lập tham số, cần được cải thiện hơn nữa. Trong tương lai, chiến lược có thể được tối ưu hóa từ các khía cạnh như cơ chế dừng lỗ, tối ưu hóa tham số, làm giàu tín hiệu và khả năng thích nghi với các thị trường khác nhau, để cải thiện độ bền và lợi nhuận của chiến lược.


/*backtest
start: 2023-05-21 00:00:00
end: 2024-05-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=4
// modified by swigle
// thanks colinmck

strategy("QQE signals bot", overlay=true)


RSI_Period = input(14, title='RSI Length')
SF = input(5, title='RSI Smoothing')
QQE = input(4.236, title='Fast QQE Factor')
ThreshHold = input(10, title="Thresh-hold")

src = close
Wilders_Period = RSI_Period * 2 - 1

Rsi = rsi(src, RSI_Period)
RsiMa = ema(Rsi, SF)
AtrRsi = abs(RsiMa[1] - RsiMa)
MaAtrRsi = ema(AtrRsi, Wilders_Period)
dar = ema(MaAtrRsi, Wilders_Period) * QQE

longband = 0.0
shortband = 0.0
trend = 0

DeltaFastAtrRsi = dar
RSIndex = RsiMa
newshortband = RSIndex + DeltaFastAtrRsi
newlongband = RSIndex - DeltaFastAtrRsi
longband := RSIndex[1] > longband[1] and RSIndex > longband[1] ? max(longband[1], newlongband) : newlongband
shortband := RSIndex[1] < shortband[1] and RSIndex < shortband[1] ? min(shortband[1], newshortband) : newshortband
cross_1 = cross(longband[1], RSIndex)
trend := cross(RSIndex, shortband[1]) ? 1 : cross_1 ? -1 : nz(trend[1], 1)
FastAtrRsiTL = trend == 1 ? longband : shortband

// Find all the QQE Crosses

QQExlong = 0
QQExlong := nz(QQExlong[1])
QQExshort = 0
QQExshort := nz(QQExshort[1])
QQExlong := FastAtrRsiTL < RSIndex ? QQExlong + 1 : 0
QQExshort := FastAtrRsiTL > RSIndex ? QQExshort + 1 : 0

//Conditions

qqeLong = QQExlong == 1 ? FastAtrRsiTL[1] - 50 : na
qqeShort = QQExshort == 1 ? FastAtrRsiTL[1] - 50 : na

// Plotting

plotshape(qqeLong, title="QQE long", text="Long", textcolor=color.white, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny)
plotshape(qqeShort, title="QQE short", text="Short", textcolor=color.white, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny)

// trade

//if qqeLong > 0
strategy.entry("buy long", strategy.long, 100, when=qqeLong)
    
if qqeShort > 0
    strategy.close("buy long")
    // strategy.exit("close_position", "buy long", loss=1000)
    // strategy.entry("sell", strategy.short, 1, when=strategy.position_size > 0)
    


Có liên quan

Thêm nữa