Sasaran Keuntungan Dinamik ATR dan Strategi Stop Loss

Penulis:ChaoZhang, Tarikh: 2023-09-14 16:22:53
Tag:

Logika Strategi

Strategi ini menggunakan sasaran keuntungan dinamik dan menghentikan kerugian yang menyesuaikan berdasarkan harga semasa dan turun naik.

Logikanya ialah:

  1. Mengira Julat Benar Purata (ATR) dalam tempoh (contohnya 20 hari)

  2. Dalam trend menaik, sasaran keuntungan / berhenti adalah harga tertinggi dikurangkan ATR kelipatan

  3. Dalam trend menurun, sasaran keuntungan/berhenti adalah harga terendah ditambah kelipatan ATR

  4. Perdagangan terbalik apabila harga melebihi sasaran keuntungan/berhenti

  5. Perubahan trend apabila harga melanggar sasaran keuntungan / berhenti

  6. Penyesuaian sasaran keuntungan/berhenti berdasarkan keadaan trend baru

Strategi ini memanfaatkan ATR untuk menetapkan sasaran keuntungan dan berhenti yang dinamik secara automatik. Ini membolehkan kunci keuntungan tepat pada masanya dan mencegah kerugian berlebihan.

Kelebihan

  • ATR secara automatik mengira tahap keuntungan/henti

  • Laluan penyesuaian dinamik harga dalam masa nyata

  • Pengendalian risiko mengambil keuntungan dan menghentikan masa

Risiko

  • Parameter ATR memerlukan pengoptimuman

  • Berhenti terlalu dekat risiko akan dihentikan

  • Perlu memantau perubahan ATR masa nyata

Ringkasan

Strategi ini menggunakan ATR untuk menetapkan tahap keuntungan / henti secara dinamik untuk pengunduran automatik. Penyesuaian ATR boleh meningkatkan prestasi henti. Tetapi henti yang terlalu ketat memerlukan berhati-hati.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Dhananjay Volatility stop strategy v1.0", overlay=true)


length = input(20)
mult = input(1)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=line, linewidth=2)

bearish = close < vstop 
bullish = close > vstop 


if (bullish)
    strategy.entry("Buy", strategy.long, 1)
    
    

if (bearish)
    strategy.entry("Sell", strategy.short, 1)
    
    

Lebih lanjut