Strategi Perdagangan Otomatis berbasis RSI

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

img

Gambaran umum

Strategi ini merancang sistem perdagangan otomatis untuk posisi panjang dan pendek berdasarkan indikator RSI. Ini memasuki perdagangan ketika RSI menunjukkan tingkat overbought atau oversold, dan keluar dengan stop loss yang dipicu oleh kondisi tertentu.

Logika Strategi

Strategi ini menggunakan indikator RSI untuk mengidentifikasi kondisi pasar overbought / oversold. Secara khusus, ketika RSI turun di bawah garis oversold, ia memasuki posisi panjang; ketika RSI melebihi garis overbought, ia memasuki posisi pendek.

Selain itu, aturan keluar ditetapkan dalam strategi. Setelah membuka posisi panjang, jika RSI melintasi di atas garis overbought lagi, itu akan memicu stop loss untuk menutup long; dengan cara yang sama, setelah membuka short, jika RSI melintasi di bawah garis oversold lagi, itu akan menutup short.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah menggunakan indikator RSI untuk menilai skenario overbought/oversold, yang merupakan metode analisis teknis yang relatif matang dan dapat diandalkan dalam perdagangan kuantitatif.

Selain itu, mekanisme stop loss secara efektif mengendalikan risiko penurunan selama tren satu arah yang kuat, yang sangat berbeda dengan strategi tradisional yang mengikuti tren di mana pelari dapat dengan mudah mengalami masalah.

Analisis Risiko

Risiko terbesar adalah indikator RSI dapat memberikan sinyal perdagangan yang salah sesekali. Tidak ada indikator teknis yang dapat 100% akurat dalam memprediksi pergerakan pasar, termasuk RSI. Ketika RSI membuat penilaian yang salah tentang status overbought/oversold, itu akan menyebabkan entri yang salah untuk strategi.

Untuk mengurangi risiko tersebut, stop loss diimplementasikan dalam strategi. Namun peluang pemicu stop loss masih bisa tinggi selama tren yang kuat, dan intervensi manual akan diperlukan untuk menutup posisi yang salah. Secara umum, pengawasan dan penyesuaian manusia masih diperlukan untuk sistem otomatis untuk mencapai kinerja maksimal.

Arahan Optimasi

Masih ada ruang untuk optimasi lebih lanjut:

  1. Masukkan indikator lain untuk mengkonfirmasi sinyal masuk dan menghindari entri yang salah dari RSI saja.

  2. Mengoptimalkan parameter RSI untuk menemukan nilai panjang yang lebih baik untuk deteksi overbought / oversold yang lebih tepat.

  3. fine tune penempatan stop loss untuk menyeimbangkan antara pencegahan kerugian dan menghindari keluar prematur.

Kesimpulan

Secara keseluruhan, strategi perdagangan otomatis berbasis RSI ini memiliki keuntungan untuk secara efektif mengidentifikasi kondisi pasar yang terlalu banyak dibeli dan terlalu banyak dijual. Dengan memasuki posisi panjang dan pendek selama tingkat RSI yang ekstrem, itu bertujuan untuk mendapatkan keuntungan dari pembalikan pasar. Mekanisme stop loss juga membantu membatasi kerugian selama tren satu arah yang kuat. Namun, risiko sinyal RSI yang salah dinilai tetap ada. Optimasi lebih lanjut pada indikator konfirmasi, parameter RSI dan penempatan stop loss dapat meningkatkan profitabilitas dan pengendalian risiko strategi. Seperti halnya semua sistem otomatis, pengawasan manusia masih diperlukan untuk intervensi dalam situasi pasar khusus.


/*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 banyak