ATR-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-28 11:32:09
Tags:

Übersicht

Diese Strategie verwendet den Average True Range (ATR) Indikator, um die Trendrichtung zu bestimmen.

Strategie Logik

Die Strategie berechnet zunächst den einfachen gleitenden Durchschnitt (sma) und den exponentiellen gleitenden Durchschnitt (ema) des Preises.

Die Strategie verwendet die EMA-Durchschnittslinie, das obere Band (EMA + ATR * Koeffizient) und das untere Band (EMA - ATR * Koeffizient), um die Trendrichtung zu bestimmen.

Hauptlogik im Code:

  1. Berechnung der Preise SMA und EMA
  2. Berechnung des ATR-Durchschnittsbereichs
  3. Berechnung der oberen und unteren Bands
  4. Bestimmung des langen Signals: Preisschwankungen über dem oberen Band
  5. Bestimmung des Kurzsignales: Preisbrüche unterhalb der unteren Bandbreite
  6. Setzen Sie einen Stop-Loss zum Schließen von Positionen: Preisbrüche unter dem oberen Band zum Schließen von Longs; Preisbrüche über dem unteren Band zum Schließen von Shorts.

Durch die dynamische Anpassung der Positionen auf der Grundlage von ATR kann er effektiv den Trendrichtungen folgen.

Vorteile

  1. Die Verwendung von ATR zur Bestimmung der Trendrichtung kann die Preisentwicklung effektiv erfassen
  2. Stop-Loss auf der Grundlage gleitender Durchschnitte kann Risiken angemessen kontrollieren
  3. Einfache und klare Strategielogik, leicht zu verstehen und umzusetzen
  4. Flexible konfigurierbare Parameter, die sich an verschiedene Marktumgebungen anpassen lassen

Risiken

  1. Der ATR-Indikator wird in stark volatilen seitlichen Märkten fehlschlagen
  2. Falsche Einstellungen von Parametern können zu häufigem Handel führen
  3. Plötzliche Umkehrungen können den Stop Loss ungültig machen
  4. Höhere Handelskosten erfordern eine Anpassung der Tracking-Einstellungen

Lösungen:

  1. Strategie pausieren oder andere Indikatoren bei hoher Volatilität verwenden
  2. Optimierung der Parameter zur Verringerung der Handelshäufigkeit
  3. Steigerung der Stop-Loss-Ratio bei wichtigen Datenereignissen
  4. Anpassung des ATR-Bereichs auf der Grundlage bestimmter Produkte

Verbesserungsrichtlinien

  1. Kombination mit Trendindikatoren zur Optimierung von Parametern, z. B. Hinzufügen von MACD für den Trend
  2. Hinzufügen von Filtern wie Bollinger Bands für den Eintrag
  3. Optimieren Sie Stop-Loss-Methoden wie Trailing-Stop- oder Exit-Indikatoren
  4. Optimierung des ATR-Bereichs auf der Grundlage spezifischer Produkte
  5. Hinzufügen von Risikomanagement wie festgefasste Position Größenordnung
  6. Dynamische Optimierung von Parametern mithilfe von maschinellem Lernen

Zusammenfassung

Die ATR Trend Following Strategie hat eine klare Logik, um die Trendrichtung mit ATR zu bestimmen. Es ist ein typisches Trend Following System. Die Vorteile sind Einfachheit und Fähigkeit, Trends zu folgen.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
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(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, 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()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   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