Strategi ini berdasarkan kepada penunjuk QQE dan penunjuk RSI. Ia mengira purata bergerak yang halus dan julat osilasi dinamik penunjuk RSI untuk membina selang isyarat panjang-pendek. Apabila penunjuk RSI memecahkan rel atas, ia menghasilkan isyarat panjang, dan apabila ia memecahkan rel bawah, ia menghasilkan isyarat pendek. Idea utama strategi adalah menggunakan ciri-ciri trend penunjuk RSI dan ciri-ciri turun naik penunjuk QQE untuk menangkap perubahan dalam trend pasaran dan peluang turun naik.
Strategi ini membina isyarat panjang-pendek berdasarkan penunjuk RSI dan penunjuk QQE, dan mempunyai ciri menangkap trend dan memahami turun naik. Logik strategi jelas, dengan lebih sedikit parameter, dan sesuai untuk pengoptimuman dan penambahbaikan lanjut. Walau bagaimanapun, strategi ini juga mempunyai risiko tertentu, seperti kawalan pengeluaran dan penetapan parameter, yang perlu ditingkatkan lagi. Pada masa akan datang, strategi dapat dioptimumkan dari aspek seperti mekanisme stop-loss, pengoptimuman parameter, pengayaan isyarat, dan kesesuaian dengan pasaran yang berbeza, untuk meningkatkan ketahanan dan keuntungan strategi.
/*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)