Dynamisches Gewinnziel und Stop-Loss-Strategie von ATR

Schriftsteller:ChaoZhang, Datum: 2023-09-14 16:22:53
Tags:

Strategie Logik

Diese Strategie verwendet dynamische Gewinnziele und Stop-Losses, die sich anhand des aktuellen Preises und der Volatilität anpassen.

Die Logik lautet:

  1. Berechnung des durchschnittlichen tatsächlichen Bereichs (ATR) über einen Zeitraum (z. B. 20 Tage)

  2. Im Aufwärtstrend ist das Gewinnziel/Stop der höchste Preis minus ATR-Multiplikator

  3. Bei einem Abwärtstrend ist das Gewinnziel/Stop der niedrigste Preis zuzüglich des ATR-Multiplikators

  4. Umgekehrter Handel, wenn der Preis das Gewinnziel/Stop übersteigt

  5. Trendänderungen, wenn der Preis das Gewinnziel/Stop überschreitet

  6. Anpassung des Gewinnziels/Stopps auf der Grundlage des neuen Trendzustands

Die Strategie nutzt ATR, um automatisch dynamische Gewinnziele und Stopps festzulegen, um rechtzeitig Gewinne zu erzielen und übermäßige Verluste zu vermeiden.

Vorteile

  • ATR berechnet automatisch Gewinn/Stopp-Level

  • Dynamische Anpassungspuren Preis in Echtzeit

  • Zeitgemäße Gewinnaufnahme und Einstellung der Risikokontrolle

Risiken

  • ATR-Parameter müssen optimiert werden

  • Wenn man zu nah anhält, läuft man Gefahr, ausgeschlossen zu werden.

  • Notwendigkeit, Echtzeit-ATR-Änderungen zu überwachen

Zusammenfassung

Diese Strategie verwendet ATR, um dynamisch Profit/Stop-Levels für automatisches Trailing festzulegen.


/*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)
    
    

Mehr