Strategi ini terutama menggunakan Indeks Kekuatan Relatif (RSI) untuk menentukan kondisi overbought dan oversold di pasar, dikombinasikan dengan harga di atas 200 hari Simple Moving Average (SMA) sebagai filter tren, untuk memutuskan apakah akan memasuki perdagangan. Strategi ini membangun kondisi masuk melalui tiga indikator RSI. Hanya ketika RSI jangka pendek di bawah 35 dan menunjukkan tren penurunan selama tiga periode berturut-turut, sementara RSI periode ketiga di bawah 60, dan harga penutupan saat ini di atas SMA 200 hari, apakah akan panjang.
Strategi ini membangun kondisi masuk melalui RSI tiga kali lipat, dikombinasikan dengan harga di atas rata-rata bergerak jangka panjang sebagai filter tren, untuk menangkap pengaturan pembalikan oversold. Logika strategi sederhana dan jelas, mudah diterapkan dan dioptimalkan. Namun, strategi ini juga memiliki risiko dan kekurangan seperti lag sinyal, frekuensi perdagangan yang rendah, dan hanya dapat menangkap pergerakan pasar yang sepihak. Ini membutuhkan debugging dan peningkatan terus-menerus dalam aplikasi aktual. Dengan memperkenalkan stop loss dan profit taking, manajemen posisi, menggabungkan dengan indikator lain dan metode lain, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*backtest start: 2023-05-15 00:00:00 end: 2024-05-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@author Honestcowboy // strategy("Triple RSI [Honestcowboy]" ) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> User Inputs <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> VARIABLE CALCULATIONS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput) down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> CONDITIONALS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rule1 = rsi<35 rule2 = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3] rule3 = rsi[3]<60 rule4 = close>ta.sma(close, 200) longCondition = rule1 and rule2 and rule3 and rule4 closeCondition = rsi>50 // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> GRAPHICAL DISPLAY <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> hline(30, title="Long Condition Line") hline(50, title="Exit Condition Line") plot(rsi) plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute) plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> AUTOMATION AND BACKTESTING <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> if longCondition and strategy.position_size==0 strategy.entry("LONG", strategy.long) if closeCondition strategy.close("LONG")