
Strategi ini dikembangkan berdasarkan indikator StochRSI. Strategi ini terutama menggunakan indikator StochRSI untuk menilai overbought dan oversold, digabungkan dengan indikator RSI untuk memfilter beberapa sinyal palsu, melakukan shorting ketika indikator StochRSI menunjukkan area oversold, dan melakukan overbought ketika menunjukkan area oversold, untuk mencapai keuntungan.
Strategi ini terutama menggunakan indikator StochRSI untuk menentukan area overbought dan oversold di pasar. Indikator StochRSI terdiri dari garis K dan garis D, di mana garis K mencerminkan posisi nilai RSI saat ini dalam kisaran harga RSI dalam periode terakhir, dan garis D adalah rata-rata bergerak dari garis K. Ketika K melewati garis D di atas zona oversold, maka dapat dilakukan overbought; Ketika K melewati garis D di bawah zona oversold, maka dapat dilakukan overbought.
Secara khusus, strategi pertama menghitung nilai indikator RSI dengan panjang 14, lalu menerapkan indikator StochRSI pada indikator RSI. Pengaturan parameter indikator StochRSI dengan panjang 14, garis siklus kelancaran K adalah 3, dan garis D adalah 3. Ketika K melewati area oversold yang ditetapkan pengguna di garis (default 1), lakukan lebih banyak; Ketika K melewati area oversold yang ditetapkan pengguna di bawah garis (default 99), lakukan kosong.
Selain itu, strategi juga mengatur parameter stop loss dan trailing stop. Parameter stop loss secara default adalah 10000; stop loss diatur sebagai stop trailing curve berdasarkan parameter, dengan trailing point default 300 dan drift 0 [2].
Untuk risiko di atas, Anda dapat mengatur siklus parameter yang lebih lama atau mempertimbangkan untuk menggunakannya dengan kombinasi indikator lain untuk memfilter sinyal, menyesuaikan parameter overbought dan oversold untuk menyesuaikan dengan pasar yang berbeda, dan menguji parameter stop loss yang berbeda.
Strategi ini didasarkan pada indikator StochRSI untuk menentukan area overbought dan oversold. Dengan menggunakan ide KDJ, StochRSI dapat lebih akurat menentukan titik pivot dibandingkan dengan indikator RSI tunggal. Dengan menggunakan RSI untuk memfilter sinyal palsu dan mengatur risiko pengendalian stop loss.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version= 2
strategy("STOCHRSI JURE", overlay=false)
lengthrsi = input(10)
overSold = input( 1 )
overBought = input(99)
call_trail_stop = input(300)
call_trail_offset = input(0)
call_sl = input(10000)
price = ohlc4
vrsi = rsi(price, lengthrsi)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot( k, color=blue, linewidth=1, title="K")
plot( d, color=red, linewidth=1, title="D")
if (crossover(k, overSold) )
strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
strategy.exit("BUY EXIT", "BUY", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
if (crossunder(k, overBought) )
strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL")
strategy.exit("SELL EXIT", "SELL", trail_points=call_trail_stop, trail_offset=call_trail_offset, loss = call_sl)
//if ( ( crossover(k,d)) and ( (vrsi<overSold) or crossover(vrsi,overSold) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil)
// strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="BUY")
//else
// strategy.cancel(id="BUY")
//if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil )
// strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", oca_type=strategy.oca.cancel, comment="SELL")
//else
// strategy.cancel(id="SELL")