
Strategi ini direka bentuk berdasarkan indikator RSI untuk sistem perdagangan automatik yang lebih terbuka. Sistem ini boleh masuk secara automatik untuk melakukan shorting tambahan apabila RSI terlalu banyak dan secara aktif menghentikan kerugian apabila keadaan tertentu mencetuskan.
Strategi ini menggunakan indikator RSI untuk menilai fenomena jual beli di pasaran. Secara khusus, apabila indikator RSI berada di bawah garis jual beli yang ditetapkan, masuklah lebih banyak; apabila indikator RSI berada di atas garis beli yang ditetapkan, masuklah lebih sedikit.
Di samping itu, strategi ini juga menetapkan syarat keluar. Apabila lebih banyak, jika RSI lagi melintasi garis beli, ia akan mencetuskan berhenti kehilangan banyak; Begitu juga, apabila kosong, jika RSI lagi melintasi garis jual, ia akan mencetuskan berhenti kehilangan kosong.
Kelebihan terbesar strategi ini adalah menggunakan indikator RSI untuk menilai fenomena overbought dan oversold di pasaran, yang merupakan kaedah analisis teknikal yang lebih matang dan dipercayai dalam perdagangan kuantitatif. Berbanding dengan strategi purata bergerak yang mudah, strategi ini dapat menangkap titik perubahan pasaran dengan lebih tepat, sehingga meningkatkan ruang keuntungan sistem perdagangan.
Selain itu, strategi ini menetapkan syarat-syarat keluar yang dapat mengawal risiko kerugian yang ditimbulkan dalam keadaan satu arah. Ini berbeza dengan strategi mengikuti trend tradisional yang dapat mengelakkan keadaan pegangan pegangan.
Risiko terbesar dalam strategi ini adalah bahawa isyarat perdagangan yang dikeluarkan oleh indikator RSI boleh disalahartikan. Tidak ada indikator teknikal yang dapat menilai pergerakan pasaran dengan tepat, dan indikator RSI tidak terkecuali.
Untuk mengurangkan risiko ini, strategi ini menetapkan garis stop loss. Tetapi dalam keadaan unilateral, kemungkinan besar garis stop loss akan dicetuskan. Pada masa ini, intervensi manual diperlukan untuk menutup kedudukan yang salah.
Strategi ini masih boleh dioptimumkan lagi:
Gabungan beberapa petunjuk mengesahkan isyarat masuk, mengelakkan salah masuk yang disebabkan oleh penilaian RSI secara berasingan. Sebagai contoh, penunjuk purata bergerak boleh dimasukkan dan sebagainya.
Mengoptimumkan parameter RSI, mencari parameter panjang RSI yang lebih sesuai, menjadikan keputusan overbought dan oversold lebih tepat.
Mengoptimumkan tetapan garis berhenti untuk mengelakkan kerugian sebanyak mungkin dan memastikan bahawa garis berhenti tidak terlalu sensitif.
Secara keseluruhannya, strategi perdagangan automatik berasaskan RSI ini mempunyai kelebihan untuk mengenal pasti keadaan pasaran yang terlalu banyak dan terlalu banyak. Ia bertujuan untuk mendapat keuntungan daripada pembalikan pasaran dengan memasuki kedudukan overhead dan kosong semasa tahap RSI yang melampau.
/*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="")