Strategie zur Verringerung des ATR-Ausweichens

Schriftsteller:ChaoZhang, Datum: 2023-09-26 20:23:13
Tags:

Übersicht: Die ATR-Trailing-Stop-Strategie ist eine Handelsstrategie, die die Stop-Loss-Levels dynamisch basierend auf dem Indikator Average True Range (ATR) festlegt.

Strategie Logik

Die Strategie berechnet den AVERAGE-Indikator (Preis gleitender Durchschnitt) und die oberen/unten Bands DIFF/DIFFLOW basierend auf den ATR-Werten, die einen Handelskanal bilden.

Der Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss an den Anschluss.

Die Strategie kann somit kontinuierlich Long/Short gehen, um Gewinne bei wichtigen Trends zu erzielen, während sie ATR-Trailing-Stops zur Risikokontrolle verwendet.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die ATR-basierten dynamischen Stopps passen sich an die Marktvolatilität an und vermeiden Stopps, die zu nah oder zu weit liegen.

  2. Der Handelskanal zielt darauf ab, die durchschnittliche Umkehr innerhalb der Trends zu erfassen.

  3. Kontinuierlicher Trendhandel ohne Vorhersage von Ausbrüchen. Folgt Trends für bessere Rentabilität.

  4. Einfache Parameter und Regeln, leicht zu verstehen und zu automatisieren.

  5. Hohe Kapitalverwertung, kontinuierlicher Handel bieten mehr Gewinnchancen.

Risiken und Verbesserungen

Einige Risiken zu berücksichtigen:

  1. Große ATR-Koeffizienten führen zu zu weit entfernten Haltestellen, die das Risiko nicht kontrollieren.

  2. Whipsaws in Range-bound Märkten lösen häufige Stopps aus.

  3. Das Hinzufügen eines Trendfilters zum Handelskanal bricht nur in Richtung des Trends.

  4. Große Spitzen können Stops unwirksam machen.

Mögliche Optimierungen:

  1. Optimierung der ATR-Parameter, um das richtige Gleichgewicht zwischen der Verfolgung der Volatilität und der Vermeidung übermäßiger Stopps zu finden.

  2. Fügen Sie einen Trendindikator hinzu, nur Trades brechen in Trendrichtung.

  3. Prüfparameter für jedes Messgerät einzeln, um optimale Werte zu finden.

  4. Optimieren Sie den Einstieg, erwägen Sie den Einstieg auf Kanal-Mittellinien-Ausbrüche.

  5. Erhöhung der Positionsgröße bei gleichzeitiger Kontrolle des Gesamtrisikos/der Abwässerung.

Schlussfolgerung

Die ATR Trailing Stop Strategie handelt kontinuierlich mit Trends und steuert dabei das Risiko dynamisch. Sie eignet sich für volatile Instrumente und bietet eine gute Kapitalverwertung. Parameteroptimierung und das Hinzufügen von Filtern können die Performance weiter verbessern.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(1, type=input.float, minval=0, title="Length")
mullow = input(2, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk())
    strategy.entry("KOP", strategy.long, when=bull_cross)
    strategy.close("KOP", when=bear_cross)  
    strategy.entry("SALJ", strategy.short, when=bear_cross)
    strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Mehr