Strategi henti untung dan henti rugi dinamik ATR


Tarikh penciptaan: 2023-09-14 16:22:53 Akhirnya diubah suai: 2023-09-14 16:22:53
Salin: 0 Bilangan klik: 904
1
fokus pada
1617
Pengikut

Prinsip Strategi

Strategi ini menggunakan titik berhenti dan kerugian yang dinamik untuk berdagang. Titik berhenti dan kerugian disesuaikan secara langsung dengan harga semasa dan kadar turun naik.

Logik urus niaga:

  1. Hitung purata purata pergerakan sebenar dalam tempoh tertentu (seperti 20 hari)

  2. Apabila berada dalam keadaan bullish, stop loss adalah harga maksimum tolak ATR

  3. Apabila berada dalam keadaan turun naik, stop loss plus ATR adalah harga minimum

  4. Perdagangan terbalik apabila harga melebihi titik berhenti

  5. Mengubah keadaan trend apabila harga menembusi titik berhenti rugi

  6. Sesuaikan Stop Loss dengan keadaan baru

Strategi ini memanfaatkan ATR secara automatik untuk menetapkan stop loss, dan membolehkan pelacakan dinamik. Ia dapat mengunci keuntungan tepat pada masanya dan mengelakkan kerugian berkembang.

Kelebihan Strategik

  • ATR mengira stop loss secara automatik

  • Pengesanan dinamik, pelacakan harga dalam masa nyata

  • Penghentian Kerosakan, Pengendalian Risiko

Risiko Strategik

  • Parameter ATR memerlukan pengoptimuman ujian berulang

  • Hentikan terlalu dekat, mudah dihentikan

  • Perhatian terhadap perubahan dalam masa nyata nilai ATR

ringkaskan

Strategi ini menggunakan ATR yang secara dinamik menetapkan titik hentian hentian, untuk mencapai penjejakan automatik. Mengoptimumkan parameter ATR dapat memperoleh kesan hentian yang lebih baik. Tetapi terlalu dekat dengan hentian hentian perlu berhati-hati.

Kod sumber strategi
/*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)