Strategi ini didasarkan pada indikator QQE dan indikator RSI. Ini menghitung rata-rata bergerak halus dan rentang osilasi dinamis dari indikator RSI untuk membangun interval sinyal panjang-pendek. Ketika indikator RSI menembus rel atas, itu menghasilkan sinyal panjang, dan ketika itu menembus rel bawah, itu menghasilkan sinyal pendek. Ide utama dari strategi ini adalah menggunakan karakteristik tren indikator RSI dan karakteristik volatilitas indikator QQE untuk menangkap perubahan tren pasar dan peluang volatilitas.
Strategi ini membangun sinyal panjang-pendek berdasarkan indikator RSI dan indikator QQE, dan memiliki karakteristik penangkapan tren dan pemahaman volatilitas. Logika strategi jelas, dengan lebih sedikit parameter, dan cocok untuk optimasi dan perbaikan lebih lanjut. Namun, strategi ini juga memiliki risiko tertentu, seperti kontrol penarikan dan pengaturan parameter, yang perlu ditingkatkan lebih lanjut. Di masa depan, strategi dapat dioptimalkan dari aspek seperti mekanisme stop-loss, optimasi parameter, pengayaan sinyal, dan kemampuan beradaptasi dengan pasar yang berbeda, sehingga meningkatkan ketahanan dan profitabilitas 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)