Strategi Penembusan RSI Dual

Penulis:ChaoZhang, Tanggal: 2023-12-27 14:33:15
Tag:

img

Gambaran umum

Strategi RSI breakout ganda adalah strategi perdagangan algoritmik yang mengidentifikasi titik pembalikan harga menggunakan indikator RSI. Ini menghasilkan sinyal perdagangan dengan membandingkan indikator RSI dengan nilai ambang atas dan bawah yang telah ditetapkan sebelumnya untuk menentukan apakah pasar terlalu banyak dibeli atau terlalu banyak dijual.

Logika Strategi

Strategi ini terutama mengandalkan indikator RSI untuk menilai kondisi pasar. Indikator RSI dihitung berdasarkan perubahan harga penutupan selama periode tertentu, mencerminkan momentum pembelian dan penjualan saham. Ketika RSI melintasi di atas ambang batas atas yang telah ditetapkan (default 75), itu menunjukkan saham telah memasuki zona overbought. Ketika RSI turun di bawah ambang batas bawah yang telah ditetapkan (default 25), itu menunjukkan saham telah memasuki zona oversold.

Aturan pengadilan adalah:

  1. Ketika RSI melintasi batas atas, pergi pendek;
  2. Ketika RSI melintasi di bawah ambang bawah, pergi panjang;
  3. Tutup posisi saat mencapai stop loss atau take profit.

Logika tradingnya sederhana dan jelas, dengan pengaturan parameter referensi yang wajar, ruang konfigurasi yang besar, dan cocok untuk menangkap tren yang lebih besar di pasar.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Logika sederhana yang mudah dimengerti dan diimplementasikan;
  2. Pengaturan parameter referensi yang wajar yang dapat dipersonalisasi;
  3. Logika perdagangan terbalik yang dapat dikonfigurasi yang dapat merespons kondisi pasar secara fleksibel;
  4. Dapat secara efektif mengidentifikasi titik pembalikan harga dan menangkap tren utama.

Secara umum, dengan pengaturan parameter referensi yang wajar, implementasi yang sederhana, dan kemampuan untuk secara efektif menentukan pembalikan harga melalui RSI, strategi ini cocok untuk menangkap tren jangka menengah hingga panjang dan mudah dipahami dan digunakan sebagai strategi kuantitatif.

Analisis Risiko

Meskipun strategi ini relatif sederhana dan dapat diandalkan, kita tidak dapat mengabaikan potensi risiko yang dihadapi:

  1. Probabilitas relatif tinggi indikator RSI memicu sinyal palsu. RSI tidak dapat memprediksi pembalikan harga dengan sempurna, yang dapat menyebabkan penilaian yang salah.
  2. Kemungkinan stop loss berkelanjutan di pasar tren.
  3. RSI tidak dapat secara efektif menentukan tren rentang, yang mengarah pada kerugian yang lebih besar dalam lingkungan ini.

Untuk mengendalikan risiko, kita perlu memperhatikan hal-hal berikut:

  1. Sesuaikan parameter dengan tepat untuk mencegah tingkat kesalahan penilaian yang berlebihan.
  2. Mengkonfirmasi sinyal perdagangan dengan indikator lain untuk meningkatkan akurasi.
  3. Meningkatkan rasio mengambil keuntungan dan mengurangi ukuran stop loss tunggal.
  4. Hindari perdagangan di pasar yang berbeda.

Arahan Optimasi

Mengingat risiko utama yang dihadapi oleh strategi ini adalah kesalahan penilaian pembalikan dan kerugian di berbagai pasar, kita dapat mengoptimalkan dari aspek berikut:

  1. Indikator seperti KDJ dan MACD dapat memainkan peran penyaring untuk menghindari penilaian yang salah.
  2. Meningkatkan ambang batas untuk jumlah stop loss tunggal Dengan memperluas ruang stop loss tunggal dengan tepat dapat membantu strategi mengikuti tren besar.
  3. Tambahkan logika membatasi entri untuk sekali atau N kali per periode tertentu untuk mengontrol pembukaan posisi yang terlalu sering.
  4. Pastikan strategi hanya berjalan di pasar tren, menghindari pasar yang bervariasi, yang dapat secara signifikan mengoptimalkan rasio risiko-manfaat strategi.

Kesimpulan

Secara singkat, strategi RSI breakout ganda adalah strategi kuantitatif yang sederhana dan praktis. Ini mengidentifikasi pembalikan harga melalui RSI untuk mencapai tren sederhana. Meskipun ada risiko penilaian yang salah, optimasi seperti penyesuaian parameter, penyaringan sinyal dapat membantu mengurangi hal ini dan memungkinkannya memainkan peran penting dalam menangkap tren jangka menengah hingga panjang. Logikanya sederhana, membuatnya cocok untuk referensi dan pembelajaran pemula. Dengan optimasi lebih lanjut, strategi ini menunjukkan janji dalam memperoleh pengembalian kuantitatif yang relatif stabil.


/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)


Lebih banyak