Strategi ini terutamanya menggunakan Indeks Kekuatan Relatif (RSI) untuk menentukan keadaan overbought dan oversold di pasaran, digabungkan dengan harga di atas Purata Bergerak Sederhana (SMA) 200 hari sebagai penapis trend, untuk memutuskan sama ada untuk memasuki perdagangan. Strategi ini membina keadaan kemasukan melalui tiga penunjuk RSI. Hanya apabila RSI jangka pendek di bawah 35 dan menunjukkan trend menurun selama tiga tempoh berturut-turut, sementara RSI tempoh ketiga di bawah 60, dan harga penutupan semasa di atas SMA 200 hari, adakah ia akan panjang. Syarat keluar adalah apabila RSI melintasi di atas 50.
Strategi ini membina keadaan kemasukan melalui RSI tiga, digabungkan dengan harga di atas purata bergerak jangka panjang sebagai penapis trend, untuk menangkap persediaan pembalikan oversold. Logik strategi adalah mudah dan jelas, mudah dilaksanakan dan dioptimumkan. Walau bagaimanapun, strategi ini juga mempunyai risiko dan kekurangan seperti kelewatan isyarat, kekerapan perdagangan yang rendah, dan hanya dapat menangkap pergerakan pasaran satu hala. Ia memerlukan debugging dan peningkatan yang berterusan dalam aplikasi sebenar. Dengan memperkenalkan penghentian kerugian dan mengambil keuntungan, pengurusan kedudukan, menggabungkan dengan penunjuk lain dan kaedah lain, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.
/*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")