
Strategi ini terutama menggunakan indeks relatif kuat (RSI) untuk menilai pasar overbought dan oversold, digabungkan dengan harga di atas 200 hari rata-rata bergerak sederhana (SMA) sebagai kondisi penyaringan tren, untuk memutuskan apakah akan masuk perdagangan. Strategi ini menggunakan tiga indikator RSI untuk membangun kondisi pembukaan posisi hanya jika RSI jangka pendek lebih kecil dari 35 dan tiga siklus berturut-turut menunjukkan tren menurun, sementara RSI periode ketiga lebih kecil dari 60, dan saat ini ditutup di atas 200 hari SMA.
Strategi ini menggunakan tiga RSI untuk membangun kondisi pembukaan posisi, dengan kombinasi harga di atas garis rata-rata jangka panjang sebagai filter tren, untuk menangkap overbought reversal. Logika strategi sederhana, mudah diterapkan dan dioptimalkan. Namun, strategi ini juga memiliki risiko dan kekurangan seperti lag sinyal, frekuensi perdagangan yang rendah, dan hanya dapat menangkap gerakan satu sisi, yang perlu terus-menerus dicobai dan diperbaiki dalam aplikasi nyata. Dengan memperkenalkan stop loss, stop loss, manajemen posisi, dan kombinasi dengan indikator lainnya, metode ini dapat meningkatkan stabilitas dan keuntungan strategi.
/*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")