Strategi stop loss parabola berdasarkan indikator ATR


Tanggal Pembuatan: 2023-09-13 15:53:00 Akhirnya memodifikasi: 2023-09-13 15:53:00
menyalin: 0 Jumlah klik: 792
1
fokus pada
1166
Pengikut

Strategi ini disebut strategi stop loss parallax berdasarkan indikator ATR. Strategi ini menggunakan indikator ATR untuk menyesuaikan kecepatan penyusutan kurva stop loss parallax sehingga dapat beradaptasi dengan perubahan volatilitas pasar.

Faktor akselerasi dari stop loss pada garis parabola tradisional tetap tidak berubah dan tidak dapat menanggapi peningkatan volatilitas. Strategi ini mempercepat kecepatan kontraksi garis parabola seiring dengan meningkatnya nilai ATR, sehingga ketika volatilitas meningkat, kurva stop loss dapat lebih cepat mendekati harga, untuk mengendalikan risiko secara efektif.

Secara khusus, setelah strategi menentukan arah tren harga, faktor akselerasi adaptasi dihitung berdasarkan nilai ATR dan di karenakan menggambar kurva stop loss parabola. Apabila harga menembus garis stop loss, penutupan stop loss dilakukan.

Keuntungan dari strategi ini adalah bahwa stop loss pada garis parabola tradisional dapat disesuaikan secara dinamis berdasarkan fluktuasi pasar. Namun, parameter ATR perlu dioptimalkan, dan stop loss terlalu sensitif dan mudah dilewati.

Secara keseluruhan, penangguhan kerugian yang disesuaikan sangat penting untuk melindungi keuntungan dan mengendalikan risiko. Pedagang harus memilih indikator penangguhan yang sesuai sesuai dengan kondisi pasar, dan melakukan pengujian dan pengoptimalan parameter untuk mencapai efektivitas maksimal dari strategi penangguhan kerugian.

Kode Sumber Strategi
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="ATR Parabolic SAR Strategy [QuantNomad]", shorttitle="ATR PSAR Strategy [QN]", overlay=true, default_qty_type = strategy.percent_of_equity,  default_qty_value = 100)

atr_length = input(14)
start      = input(0.02)
increment  = input(0.02)
maximum    = input(0.2)
entry_bars = input(1, title = "Entry on Nth trend bar") 

atr = atr(atr_length)

atr := na(atr) ? tr : atr

psar        = 0.0 // PSAR
af          = 0.0 // Acceleration Factor
trend_dir   = 0   // Current direction of PSAR
ep          = 0.0 // Extreme point
trend_bars  = 0

sar_long_to_short = trend_dir[1] == 1  and close <= psar[1] // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1] // PSAR switches from short to long

trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long

// Calculate trend direction
trend_dir    :=  barstate.isfirst[1] and close[1]  > open[1] ?  1 : 
                 barstate.isfirst[1] and close[1] <= open[1] ? -1 : 
                 sar_long_to_short ? -1 : 
                 sar_short_to_long ?  1 : nz(trend_dir[1])

trend_bars := sar_long_to_short ? -1 : 
              sar_short_to_long ?  1 : 
              trend_dir ==  1   ? nz(trend_bars[1]) + 1 : 
              trend_dir == -1   ? nz(trend_bars[1]) - 1 : 
              nz(trend_bars[1])

// Calculate  Acceleration Factor
af := trend_change ? start : 
   (trend_dir == 1 and high > ep[1]) or  
   (trend_dir == -1 and low < ep[1]) ? 
   min(maximum, af[1] + increment) : 
   af[1]

// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high :  
   trend_change and trend_dir == -1 ? low : 
   trend_dir == 1 ? max(ep[1], high) : 
   min(ep[1], low)

// Calculate PSAR
psar :=  barstate.isfirst[1] and close[1]  > open[1] ? low[1]  : 
         barstate.isfirst[1] and close[1] <= open[1] ? high[1] : 
         trend_change ? ep[1] :    
         trend_dir == 1 ? psar[1] + af * atr : 
                          psar[1] - af * atr

plot(psar, style=plot.style_cross, color=trend_dir == 1 ? color.green : color.red,  linewidth = 2)


// Strategy 
strategy.entry("Long",  true,  when = trend_bars ==  entry_bars)
strategy.entry("Short", false, when = trend_bars == -entry_bars)