Strategi Dagangan Kuantitatif Berasaskan StochRSI

Penulis:ChaoZhang, Tarikh: 2023-12-07 16:05:17
Tag:

img

Ringkasan

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.

Prinsip Strategi

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.

Analisis Kelebihan

  1. Menggunakan penunjuk StochRSI untuk menentukan kawasan overbought dan oversold lebih dipercayai daripada penunjuk RSI tunggal
  2. Menapis isyarat dengan RSI mengelakkan pecah palsu
  3. Menetapkan mekanisme stop loss dan mengambil keuntungan untuk mengawal risiko

Analisis Risiko

  1. Indikator StochRSI mungkin mempunyai isyarat palsu
  2. Perlu menetapkan parameter overbought dan oversold dengan munasabah, jika tidak ia akan menyebabkan kesalahan operasi
  3. Jika titik stop loss terlalu kecil, ia mudah terperangkap. Jika titik mengambil keuntungan terlalu besar, keuntungan yang diperoleh mungkin terhad.

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.

Arahan pengoptimuman

  1. Pertimbangkan untuk menggunakan dalam kombinasi dengan penunjuk lain seperti MACD, Bollinger Bands dll untuk menapis isyarat palsu
  2. Uji tetapan kitaran parameter yang berbeza untuk menyesuaikan diri dengan lebih banyak keadaan pasaran
  3. Mengoptimumkan stop loss dan mengambil mata keuntungan dengan pelbagai backtesting untuk mencari parameter optimum

Ringkasan

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")
    
    
    

Lebih lanjut