Strategi Overbought/Oversold Berganda Berdasarkan Penunjuk RSI

Penulis:ChaoZhang, Tarikh: 2023-09-13 16:58:55
Tag:

Strategi ini dinamakan Dual Overbought/Oversold Strategy Based on RSI Indicator. Ia menggunakan kedua-dua penunjuk RSI dan penunjuk Stoch RSI untuk menentukan keadaan overbought dan oversold untuk isyarat perdagangan yang lebih boleh dipercayai.

Indikator RSI mencerminkan tahap overbought / oversold dalam harga. RSI di atas 70 menunjukkan keadaan overbought, sementara di bawah 30 adalah oversold. Indikator RSI Stoch menunjukkan jika RSI itu sendiri telah memasuki zon overbought atau oversold.

Logik perdagangan adalah:

Apabila RSI melintasi di atas garis overbought yang ditakrifkan pengguna, ia menandakan keadaan overbought untuk mempertimbangkan perdagangan pendek.

Apabila RSI jatuh di bawah garis oversold yang ditakrifkan pengguna, ia menandakan keadaan oversold untuk mempertimbangkan perdagangan panjang.

Sementara itu, Stoch RSI juga perlu menunjukkan isyarat overbought atau oversold untuk mengesahkan isyarat kemasukan yang sepadan.

Keadaan berganda ini digabungkan untuk menapis isyarat yang lebih ambigu dan mengelakkan pecah palsu.

Kelebihan strategi ini adalah menggunakan pelbagai penunjuk turunan RSI untuk penilaian julat overbought / oversold yang lebih tepat.

Ringkasnya, kombinasi penunjuk memerlukan keseimbangan yang teliti. Penggunaan yang munasabah boleh meningkatkan hasil tetapi juga boleh membawa risiko terlalu optimum. Pedagang masih memerlukan penilaian yang fleksibel.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("test1","t1",overlay=true, default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=200, currency=currency.USD)
//user input
k_param = input(title = "k length", type = input.integer, defval = 14)
d_param = input(title = "d length", type = input.integer, defval = 3)
rsi_param = input(title = "RSI", type = input.integer, defval = 5)
upper = input(title = "over brought", type = input.integer, defval = 80)
lower = input(title = "over sold", type = input.integer, defval = 20)

//calculation
rsi = rsi(close,rsi_param)
stochastic = 100*(rsi - lowest(rsi,k_param))/(highest(rsi,k_param)-lowest(rsi,k_param))
SMA = sma(stochastic,d_param)

//DRAW
plot(upper,color = color.blue,linewidth = 2, title ="超买")
plot(lower,color = color.blue,linewidth = 2, title ="超卖")
plot(rsi,color = rsi>upper ?color.red:rsi<lower? color.green:color.black, linewidth=2,title ="ris超买超卖")
plot(stochastic,color = color.purple,title="震荡指数")
plot(SMA, color = color.orange,title="移动平均")

//trading
shortposition = crossover(rsi,upper)
longposition = crossunder(rsi,lower)
strategy.entry("卖",false,when =(shortposition))
strategy.entry("买",true,when = (longposition))
strategy.exit("止盈",profit = close*0.013/syminfo.mintick)

Lebih lanjut