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

RSI QQE
Ngày tạo: 2024-05-27 15:17:45 sửa đổi lần cuối: 2024-05-27 15:17:45
sao chép: 0 Số nhấp chuột: 369
1
tập trung vào
1166
Người theo dõi

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

Tổng quan

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

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

  1. Tính trung bình di chuyển trơn của chỉ số RSI, RsiMa, là cơ sở để đánh giá xu hướng.
  2. Tính toán độ lệch tuyệt đối của chỉ số RSI là AtrRsi, và tính toán đường trung bình di chuyển trơn của nó là MaAtrRsi, làm cơ sở để đánh giá sự biến động.
  3. Động lực dao động của dar được tính dựa trên yếu tố QQE và kết hợp với RsiMa để tạo ra một dải tín hiệu đa không longband và shortband.
  4. Xác định mối quan hệ giữa chỉ số RSI và khoảng trống của tín hiệu đa, khi chỉ số RSI tạo ra tín hiệu đa khi đi qua băng tần dài và tạo ra tín hiệu trống khi đi qua băng tần ngắn
  5. Giao dịch dựa trên tín hiệu nhiều trống, mua và mua khi có tín hiệu nhiều trống, và bán khi có tín hiệu trống.

Lợi thế chiến lược

  1. Kết hợp các đặc điểm của chỉ số RSI và chỉ số QQE, có thể nắm bắt được xu hướng thị trường và cơ hội biến động tốt hơn.
  2. Sử dụng cường độ dao động động để xây dựng các khoảng tín hiệu, có thể thích ứng với sự thay đổi của tỷ lệ biến động thị trường.
  3. Xử lý trơn tru các chỉ số RSI và độ dao động, giảm hiệu quả nhiễu nhiễu và giao dịch thường xuyên.
  4. Logic rõ ràng, ít tham số, phù hợp để tối ưu hóa và cải tiến hơn nữa.

Rủi ro chiến lược

  1. Chiến lược này có thể không hoạt động tốt cho các thị trường chấn động và ít biến động.
  2. Thiếu cơ chế dừng lỗ rõ ràng, có thể có nguy cơ rút lui lớn hơn khi thị trường đột ngột đảo ngược.
  3. Cài đặt tham số có ảnh hưởng lớn đến hiệu suất chiến lược, cần điều chỉnh theo thị trường và giống khác nhau.

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

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

Tóm tắt

Chiến lược này dựa trên chỉ số RSI và chỉ số QQE để xây dựng tín hiệu đa không gian, có đặc điểm bắt xu hướng và nắm bắt biến động. Lập luận của chiến lược rõ ràng, có ít tham số, phù hợp để tối ưu hóa và cải tiến thêm. Tuy nhiên, chiến lược cũng có một số rủi ro, chẳng hạn như kiểm soát rút lui, thiết lập tham số, v.v.

Mã nguồn 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)