RSI Strategi Dagangan Automatik Pendek Panjang

Penulis:ChaoZhang, Tarikh: 2023-10-30 17:13:24
Tag:

img

Ringkasan

Strategi ini merancang sistem perdagangan automatik untuk panjang dan pendek berdasarkan penunjuk Indeks Kekuatan Relatif (RSI). Ia boleh menghasilkan isyarat panjang dan pendek secara automatik apabila RSI mencapai tahap overbought atau oversold dan menjalankan perdagangan automatik.

Logika Strategi

Strategi ini mengira nilai RSI dalam julat 0-100 berdasarkan kenaikan dan penurunan harga dalam tempoh tertentu. Apabila RSI di bawah 30, ia adalah status oversold. Apabila RSI di atas 70, ia adalah status overbought. Menurut peraturan ini, strategi secara automatik pergi lama apabila RSI mencapai zon oversold dan pergi pendek apabila RSI mencapai zon overbought.

Secara khusus, strategi ini pertama kali mengira RSI 15 tempoh. Apabila RSI jatuh di bawah 20, ia dianggap oversold. Pada masa ini, apabila harga memecahkan di atas purata bergerak 200 hari, kedudukan panjang dibuka. Apabila RSI meningkat di atas 80, ia dianggap overbought. Pada masa ini, kedudukan pendek dibuka. Selepas pergi panjang atau pendek, mengambil keuntungan dan menghentikan kerugian ditetapkan untuk keluar kedudukan.

Di samping itu, strategi menarik garis landmark dan label yang sesuai apabila isyarat harga berlaku untuk membuat isyarat perdagangan lebih intuitif.

Kelebihan Strategi

  • Idea strategi adalah jelas dan mudah difahami dan dilaksanakan
  • Berdasarkan penunjuk RSI, penilaian overbought dan oversold adalah tepat
  • Perdagangan automatik sepenuhnya tanpa campur tangan manual
  • Mengambil keuntungan dan menghentikan kerugian yang ditetapkan untuk mengawal risiko dengan berkesan
  • Isyarat perdagangan intuitif dan mudah dipantau

Risiko Strategi

  • Indikator RSI mempunyai beberapa ketinggalan, boleh menyebabkan penilaian yang salah
  • Sempadan overbought dan oversold yang tetap tidak sesuai untuk semua produk
  • Tetapan stop loss yang tidak betul boleh menyebabkan kerugian yang lebih besar
  • Perdagangan dengan trend utama dalam pasaran trend boleh menyebabkan kerugian

Langkah-langkah kawalan risiko termasuk: mengoptimumkan parameter RSI, menyesuaikan ambang overbought dan oversold untuk menyesuaikan produk yang berbeza, menetapkan stop loss dengan munasabah, menggabungkan dengan penunjuk trend untuk mengelakkan perdagangan terhadap trend.

Arahan untuk Pengoptimuman Strategi

  • Mengoptimumkan parameter RSI untuk meningkatkan ketepatan menilai overbought dan oversold
  • Memastikan isyarat dagangan dengan penunjuk lain seperti KDJ, MACD dll.
  • Mengoptimumkan tetapan stop loss mengikut keadaan pasaran
  • Tambah pertimbangan trend untuk mengelakkan operasi terbalik
  • Set kurva ekuiti pengesanan stop loss
  • Membangunkan modul kawalan risiko untuk mengawal risiko tunggal dan keseluruhan

Ringkasan

Secara keseluruhan, ini adalah strategi perdagangan automatik yang menggunakan penunjuk RSI untuk menilai keadaan overbought dan oversold. Ia menghasilkan isyarat perdagangan apabila RSI mencapai tahap overbought atau oversold yang melampau, dan boleh secara automatik menjalankan perdagangan panjang dan pendek. Idea strategi adalah mudah dan jelas, mudah dilaksanakan, dan sesuai sebagai strategi perdagangan automatik asas. Tetapi penunjuk RSI mempunyai beberapa kelewatan, jadi disyorkan untuk mengoptimumkannya dengan penunjuk lain untuk meningkatkan ketepatan isyarat. Di samping itu, perhatian harus diberikan kepada kawalan risiko, mengoptimumkan mekanisme kehilangan berhenti, membangunkan modul kawalan risiko untuk mengurangkan risiko perdagangan. Jika dioptimumkan dan disahkan dalam perdagangan langsung, strategi boleh menjadi sistem automatik yang berkesan untuk perdagangan panjang dan pendek.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Improved strategy", overlay=true)
higherTF1 = input.timeframe('15' , "Resolution", options = ['5', '15', '1H', 'D', 'W', 'M'])
dailyopen = request.security(syminfo.tickerid, higherTF1, close)

Reward = input(1600)
Risk = input(1600)

length = input( 5 )
overSold = input( 30 )
overBought = input( 70 )
EMA = input(200)
price = close

vrsi = ta.rsi(price, length)

RSIlowest =  vrsi[1] > vrsi ? true : false
RSIhighest = vrsi[1] < vrsi ? true : false

//ro = ta.crossunder(vrsi, 20)
//ru = ta.crossover(vrsi, 80)

co = ta.crossunder(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)

plot(ta.ema(close, EMA))
plot(ta.ema(close, 50), color = color.orange)

UponEMA = close > ta.ema(close, EMA) ? true : false
belowEMA = close < ta.ema(close, EMA) ? true : false
//transfer 'float' to 'int' to 'string'
r = int(vrsi)
value = str.tostring(r)

m = int(strategy.openprofit)
money = str.tostring(m)
if (not na(vrsi))
	//when price stand up on 200ema and rsi is at oversold area, open long position 
//	if (co and UponEMA)
  //      strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
        
    if(vrsi < 20 and RSIlowest)
        // line1 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color=color.aqua, width = 2)
        // line.delete(line1[1])  // remove the previous line when new bar appears
        // label1 = label.new(x=bar_index, y=dailyopen,yloc=yloc.belowbar, text = value,textcolor = color.white, color = color.green, style = label.style_label_up)
        // label.delete(label1[1])
        strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
        strategy.exit("exit", "Rsi long", profit = Reward, loss = Risk, comment = "Rsi long exit")
//strategy.close("Rsi short", comment = "Rsi close")

	
	

	if(vrsi > 80 and RSIhighest)
        // line2 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color = #e65100, width = 2)
        // line.delete(line2[1])  // remove the previous line when new bar appears
        // label2 = label.new(x=bar_index, y=dailyopen,yloc=yloc.abovebar, text = value, textcolor = color.white, color = color.red)            
        // label.delete(label2[1])
        strategy.order("Rsi short",strategy.short, 1,  comment = "Rsi short ")
        strategy.exit("exit", "Rsi short", profit = Reward,loss = Risk, comment = "Rsi short exit")
//	if(UponEMA)
//        strategy.close("Rsi short", comment = "Rsi short close")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_cross)
//plotshape(confirmPH, title="Label",offset = 1,text="Bull",style=shape.labeldown,location=location.abovebar,color=color.green,textcolor=color.green)




//when Rsi reaches overbought, draw a Horizontal Ray to close prices, similarly when it comes to oversold.(accomplished)
//detects when there is more lower/higher RSI values, adjust horizontal Ray and label to new posistion.(accomplished)

Lebih lanjut