Strategi ini dibangunkan berdasarkan penunjuk StochRSI. Strategi ini terutamanya menggunakan penunjuk StochRSI untuk menilai situasi overbought dan oversold. Digabungkan dengan penunjuk RSI untuk menapis beberapa isyarat palsu, pergi pendek apabila penunjuk StochRSI menunjukkan kawasan overbought dan pergi panjang apabila ia menunjukkan kawasan oversold untuk membuat keuntungan.
Strategi ini terutamanya menggunakan penunjuk StochRSI untuk menilai kawasan overbought dan oversold di pasaran. Penunjuk StochRSI terdiri daripada garisan K dan garisan D. Garis K mencerminkan kedudukan nilai RSI semasa dalam julat harga RSI dalam tempoh baru-baru ini. Garis D adalah purata bergerak garisan K. Apabila garisan K melintasi di atas garisan D, ia adalah kawasan overbought dan kedudukan panjang boleh diambil. Apabila garisan K jatuh di bawah garisan D, ia adalah kawasan oversold dan kedudukan pendek boleh diambil.
Secara khusus, strategi ini mula-mula mengira nilai penunjuk RSI 14 tempoh, dan kemudian menggunakan penunjuk StochRSI pada penunjuk RSI. Parameter penunjuk StochRSI ditetapkan dengan panjang 14, tempoh garis K rata 3 dan tempoh garis D rata 3. Apabila garis K melintasi di atas kawasan oversold yang ditakrifkan pengguna (default adalah 1), kedudukan panjang akan diambil. Apabila garis K jatuh di bawah kawasan overbought yang ditakrifkan pengguna (default adalah 99), kedudukan pendek akan diambil.
Selain itu, parameter stop loss dan take profit ditetapkan dalam strategi. Stop loss adalah lalai kepada 10000. Take profit menggunakan trailing stop dengan titik trailing default 300 dan offset 0.
Untuk risiko di atas, parameter kitaran yang lebih lama boleh ditetapkan atau dipertimbangkan untuk digunakan dalam kombinasi dengan penunjuk lain untuk menapis isyarat, menyesuaikan parameter overbought dan oversold untuk menyesuaikan diri dengan pasaran yang berbeza, dan menguji parameter stop loss dan mengambil keuntungan yang berbeza.
Strategi ini berdagang berdasarkan kawasan overbought dan oversold yang dinilai oleh penunjuk StochRSI. Berbanding dengan penunjuk RSI tunggal, StochRSI menggabungkan idea KDJ dan dapat menilai titik balik dengan lebih tepat. Pada masa yang sama, isyarat palsu disaring oleh RSI dan risiko dikawal dengan stop loss dan mengambil keuntungan. Masih ada ruang yang besar untuk pengoptimuman, ia boleh digabungkan dengan penunjuk lain atau tetapan parameter yang dioptimumkan.
/*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")