
Strategi ini adalah berdasarkan QQE dan RSI, dengan mengira purata bergerak lancar RSI dan amplitudo goyah dinamik, untuk membina ruang isyarat yang lebih banyak. Apabila RSI menembusi, ia menghasilkan isyarat yang lebih banyak, dan apabila ia menembusi, ia menghasilkan isyarat yang lebih rendah.
Strategi ini dibina berdasarkan petunjuk RSI dan QQE untuk membina isyarat banyak ruang, dengan ciri-ciri menangkap trend dan menangkap turun naik. Logik strategi jelas, parameter yang lebih sedikit, sesuai untuk pengoptimuman dan penambahbaikan lebih lanjut. Tetapi strategi juga mempunyai risiko tertentu, seperti kawalan penarikan balik, pengaturan parameter, dan lain-lain.
/*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)