Strategi Perdagangan Auto berasaskan RSI

Penulis:ChaoZhang, Tarikh: 2024-02-29 14:14:01
Tag:

img

Ringkasan

Strategi ini merancang sistem perdagangan automatik untuk kedua-dua kedudukan panjang dan pendek berdasarkan penunjuk RSI. Ia memasuki perdagangan apabila RSI menunjukkan tahap overbought atau oversold, dan keluar dengan stop loss yang dicetuskan oleh keadaan tertentu.

Logika Strategi

Strategi ini menggunakan penunjuk RSI untuk mengenal pasti keadaan pasaran yang terlalu banyak dibeli / terlalu banyak dijual. Khususnya, apabila RSI jatuh di bawah garis oversold, ia memasuki kedudukan panjang; apabila RSI melebihi garis overbought, ia memasuki kedudukan pendek.

Selain itu, peraturan keluar ditetapkan dalam strategi. Selepas membuka kedudukan panjang, jika RSI melintasi di atas garis overbought lagi, ia akan mencetuskan kerugian berhenti untuk menutup panjang; dengan cara yang sama, selepas membuka pendek, jika RSI melintasi di bawah garis oversold lagi, ia akan menutup pendek.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah menggunakan penunjuk RSI untuk menilai senario overbought / oversold, yang merupakan kaedah analisis teknikal yang agak matang dan boleh dipercayai dalam perdagangan kuantitatif.

Juga, mekanisme stop loss berkesan mengawal risiko penurunan semasa trend satu arah yang kuat, yang sangat berbeza dengan strategi trend tradisional di mana pelari boleh mudah mendapat masalah.

Analisis Risiko

Risiko terbesar adalah penunjuk RSI boleh memberikan isyarat perdagangan yang salah kadang-kadang. Tiada penunjuk teknikal boleh 100% tepat dalam meramalkan pergerakan pasaran, termasuk RSI. Apabila RSI membuat penilaian yang salah mengenai status overbought / oversold, ia akan membawa kepada entri yang salah untuk strategi.

Untuk mengurangkan risiko tersebut, stop loss dilaksanakan dalam strategi. Tetapi kemungkinan pemicu stop loss masih boleh tinggi semasa trend yang kuat, dan campur tangan manual diperlukan untuk menutup kedudukan yang salah. Secara umum, pengawasan dan penyesuaian manusia masih diperlukan untuk sistem automatik untuk mencapai prestasi maksimum.

Arahan pengoptimuman

Masih ada ruang untuk pengoptimuman lanjut:

  1. Masukkan penunjuk lain untuk mengesahkan isyarat kemasukan dan mengelakkan entri yang salah dari RSI sahaja. purata bergerak dan lain-lain boleh ditambah.

  2. Mengoptimumkan parameter RSI untuk mencari nilai panjang yang lebih baik untuk pengesanan overbought / oversold yang lebih tepat.

  3. Penempatan stop loss yang halus untuk menyeimbangkan antara pencegahan kerugian dan mengelakkan keluar awal.

Kesimpulan

Secara keseluruhannya, strategi perdagangan automatik berasaskan RSI ini mempunyai kelebihan untuk mengenal pasti keadaan pasaran yang terlalu banyak dibeli dan terlalu banyak dijual. Dengan memasuki kedudukan panjang dan pendek semasa tahap RSI yang melampau, ia bertujuan untuk mendapat keuntungan dari pembalikan pasaran. Mekanisme stop loss juga membantu untuk mengehadkan kerugian semasa trend satu arah yang kuat. Walau bagaimanapun, risiko isyarat RSI yang salah dinilai tetap ada. Pengoptimuman lanjut pada pengesahan penunjuk, parameter RSI dan penempatan stop loss dapat meningkatkan keuntungan dan kawalan risiko strategi. Seperti semua sistem automatik, pengawasan manusia masih diperlukan untuk campur tangan dalam situasi pasaran khas.


/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - LONG SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows Buy and close Buy positions --------------- //

timebull = stratbull 
timebear = stratbear 

strategy.entry("Long", true, when = timebull and crossover(rsiVWAP, ovrsld), comment="")
strategy.close("Long", when = timebull and crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="")


Lebih lanjut