Strategi ini dikembangkan berdasarkan indikator StochRSI. Strategi ini terutama menggunakan indikator StochRSI untuk menilai situasi overbought dan oversold. Dikombinasikan dengan indikator RSI untuk menyaring beberapa sinyal palsu, pergi pendek ketika indikator StochRSI menunjukkan area overbought dan pergi panjang ketika menunjukkan area oversold untuk menghasilkan keuntungan.
Strategi ini terutama menerapkan indikator StochRSI untuk menilai area overbought dan oversold di pasar. Indikator StochRSI terdiri dari garis K dan garis D. Garis K mencerminkan posisi nilai RSI saat ini dalam kisaran harga RSI selama periode terakhir. Garis D adalah rata-rata bergerak dari garis K. Ketika garis K melintasi di atas garis D, itu adalah area overbought dan posisi panjang dapat diambil. Ketika garis K jatuh di bawah garis D, itu adalah area oversold dan posisi pendek dapat diambil.
Secara khusus, strategi pertama menghitung nilai indikator RSI 14 periode, dan kemudian menerapkan indikator StochRSI pada indikator RSI. Parameter indikator StochRSI ditetapkan dengan panjang 14, periode garis K rata 3 dan periode garis D rata 3. Ketika garis K melintasi di atas area oversold yang ditentukan oleh pengguna (default adalah 1), posisi panjang akan diambil. Ketika garis K jatuh di bawah area overbought yang ditentukan oleh pengguna (default adalah 99), posisi pendek akan diambil.
Selain itu, parameter stop loss dan take profit ditetapkan dalam strategi. Stop loss adalah default ke 10000. Take profit menggunakan trailing stop dengan default trailing point 300 dan offset 0.
Untuk risiko di atas, parameter siklus yang lebih lama dapat ditetapkan atau dipertimbangkan untuk digunakan dalam kombinasi dengan indikator lain untuk menyaring sinyal, menyesuaikan parameter overbought dan oversold untuk beradaptasi dengan pasar yang berbeda, dan menguji parameter stop loss dan take profit yang berbeda.
Strategi ini diperdagangkan berdasarkan area overbought dan oversold yang dinilai oleh indikator StochRSI. Dibandingkan dengan indikator RSI tunggal, StochRSI menggabungkan gagasan KDJ dan dapat menilai titik balik dengan lebih akurat. Pada saat yang sama, sinyal palsu disaring oleh RSI dan risiko dikendalikan oleh stop loss dan take profit. Masih ada ruang besar untuk optimasi, dapat dikombinasikan dengan indikator lain atau pengaturan parameter yang dioptimalkan.
/*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")