Strategi stop loss parabola berdasarkan penunjuk ATR


Tarikh penciptaan: 2023-09-13 15:53:00 Akhirnya diubah suai: 2023-09-13 15:53:00
Salin: 0 Bilangan klik: 1194
1
fokus pada
1617
Pengikut

Strategi ini dinamakan strategi paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras paras

Faktor pecutan paras paras paras paras tradisional tetap tidak berubah dan tidak dapat menangani peningkatan kadar turun naik. Strategi ini menjadikan keruntuhan paras paras paras semakin cepat dengan peningkatan nilai ATR, sehingga apabila turun naik meningkat, kurva paras dapat mendekati harga lebih cepat, dan mengawal risiko dengan berkesan.

Khususnya, selepas strategi menentukan arah trend harga, faktor percepatan penyesuaian dikira berdasarkan nilai ATR, dan dengan itu melukis kurva hentian parasol. Apabila harga menembusi garis hentian, melakukan kedudukan hentian hentian.

Kelebihan strategi ini adalah bahawa paras paras paras paras tradisional dapat disesuaikan secara dinamik berdasarkan turun naik pasaran. Tetapi parameter ATR perlu dioptimumkan dan paras paras terlalu sensitif dan mudah ditembusi.

Secara keseluruhan, penangguhan kerugian secara automatik adalah penting untuk melindungi keuntungan dan mengawal risiko. Pedagang harus memilih indikator penangguhan yang sesuai mengikut keadaan pasaran, dan melakukan ujian dan pengoptimuman parameter untuk mencapai keberkesanan maksimum strategi penangguhan kerugian.

Kod 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)