Strategi perdagangan kuantitatif berdasarkan StochRSI

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

img

Gambaran umum

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.

Prinsip Strategi

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.

Analisis Keuntungan

  1. Menggunakan indikator StochRSI untuk menentukan area overbought dan oversold lebih dapat diandalkan daripada indikator RSI tunggal
  2. Menyaring sinyal dengan RSI menghindari pecah palsu
  3. Menetapkan mekanisme stop loss dan take profit untuk mengendalikan risiko

Analisis Risiko

  1. Indikator StochRSI mungkin memiliki sinyal palsu
  2. Perlu mengatur parameter overbought dan oversold wajar, jika tidak akan menyebabkan kesalahan operasi
  3. Jika titik stop loss terlalu kecil, mudah untuk terjebak. Jika titik take profit terlalu besar, keuntungan yang diperoleh mungkin terbatas.

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.

Arahan Optimasi

  1. Pertimbangkan untuk menggunakan dalam kombinasi dengan indikator lain seperti MACD, Bollinger Bands dll untuk menyaring sinyal palsu
  2. Uji pengaturan siklus parameter yang berbeda untuk beradaptasi dengan kondisi pasar yang lebih banyak
  3. Mengoptimalkan stop loss dan mengambil poin keuntungan dengan beberapa backtesting untuk menemukan parameter optimal

Ringkasan

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

Lebih banyak