Die Ressourcen sind geladen. Beförderung...

Trend nach der Strategie "durchschnittliche Wahre Reichweite"

Schriftsteller:ChaoZhang, Datum: 2024-05-24 18:12:01
Tags:ATRTS

img

Übersicht

Diese Strategie verwendet den Durchschnittlichen Wahren Bereich (ATR) als Grundlage für einen Trailing Stop (TS), der die Stop-Loss-Position dynamisch anpasst, um dem Trend zu folgen. Wenn sich der Preis in eine günstige Richtung bewegt, wird die Stop-Loss-Position entsprechend angepasst, um Gewinne zu erzielen; wenn sich der Preis in eine negative Richtung bewegt, bleibt die Stop-Loss-Position unverändert, und sobald der Preis den Stop-Loss-Preis erreicht, wird die Position geschlossen. Der Schlüssel zu dieser Strategie liegt in der dynamischen Anpassung der Stop-Loss-Position, die sowohl Gewinne schützen als auch Gewinne erweitern kann, wenn der Trend andauert.

Strategieprinzip

  1. Berechnen Sie den ATR als Basis für den Trailing Stop. Der ATR spiegelt die Marktvolatilität wider und wird zur Messung der durchschnittlichen Größenordnung der Preisänderungen verwendet.
  2. Berechnen Sie die Stop-Loss-Distanz nLoss basierend auf dem ATR- und dem KeyValue-Parameter. KeyValue ist ein benutzerdefinierter Multiplikator und nLoss ist das Produkt von KeyValue und ATR, was bedeutet, dass die Stop-Loss-Distanz mehrfach das ATR beträgt.
  3. Berechnen Sie die dynamische Trailing-Stop-Position xATRTrailingStop. Für eine Long-Position wird sie auf den größeren von dem höchsten Preis der vorherigen Kerze und (schließen - nLoss) festgelegt; für eine Short-Position wird sie auf den kleineren von dem niedrigsten Preis der vorherigen Kerze und (schließen + nLoss) festgelegt.
  4. Erstellen Sie Eintrittssignale. Wenn der Schlusskurs über xATRTrailingStop geht, gehen Sie lang; wenn der Schlusskurs unter xATRTrailingStop geht, gehen Sie kurz.

Analyse der Vorteile

  1. Die Stop-Loss-Position wird dynamisch an die Preisschwankungen angepasst, so dass die Gewinne eingeschlossen bleiben und gleichzeitig mit fortschreitendem Trend die Gewinne wachsen können.
  2. Die Stop-Loss-Position basiert auf der ATR-Berechnung, die die Marktvolatilität objektiv widerspiegeln kann und im Vergleich zu subjektiv festgelegten Fix-Stop-Loss-Positionen flexibler und effektiver ist.
  3. Durch die Verstärkung des ATR mit dem KeyValue-Parameter können Sie eine geeignete Stop-Loss-Distanz basierend auf Ihren Risikopräferenzen festlegen.

Risikoanalyse

  1. Trend-folgende Strategien sind in unsicheren Märkten schlecht geeignet, und wenn der einseitige Trend nicht klar ist, können häufige Stop-Losses zu einem schnellen Verlust von Geldern führen.
  2. Der Eintrittszeitpunkt beruht auf dem Kreuzsignal zwischen dem Schlusskurs und der dynamischen Stop-Loss-Linie, was in einem unruhigen Markt zu aufeinanderfolgenden kleinen Stop-Losss führen kann.
  3. Bei der Einführung von Trailing Stop-Strategien können Lücken, die durch signifikante bearish oder bullish Nachrichten verursacht werden, nicht vermieden werden, und die Anpassungsgeschwindigkeit der Stop-Loss-Position kann nicht mit der Preisänderungsgeschwindigkeit Schritt halten, was zu tatsächlichen Verlusten führt, die weitaus größer sind als die erwarteten kontrollierbaren Verluste.

Optimierungsrichtung

  1. Trendbeurteilungsindikatoren, wie beispielsweise gleitende Durchschnittssysteme und Dynamikindikatoren, können der Strategie hinzugefügt werden, um nur dann in den Markt einzusteigen, wenn der Trend klar ist, und vermeiden, häufig in unruhigen Märkten zu handeln.
  2. Eine Take-Profit-Strategie kann in Betracht gezogen werden, wie z. B. die Berechnung von Positionsgrößen auf der Grundlage der Kelly-Formel, Festgewinnpunkte für Retracement-Stop-Profits usw., um die Möglichkeit potenzieller Gewinnrückgänge am Ende eines Trends zu verringern.
  3. Für Gap-Openings kann eine maximale Stop-Loss-Grenze festgelegt werden, z. B. ein fester Betrag oder ein fester Prozentsatz.

Zusammenfassung

Die ATR Trailing Stop Strategie kann die Stop-Loss-Position dynamisch anhand der Größenordnung der Preisschwankungen anpassen und kann in Trendmärkten gute Ergebnisse erzielen. Diese Strategie birgt jedoch auch Risiken wie Unfähigkeit, mit unruhigen Märkten umzugehen, übermäßige Stop-Loss-Frequenz und Schwierigkeiten, Lücken zu vermeiden. Um diese Mängel zu beheben, kann die Strategie in Bezug auf Trendbeurteilung, Take-Profit-Strategien und maximale Stop-Loss-Limits optimiert und verbessert werden. Mit diesen Anpassungen kann die Anpassungsfähigkeit und Rentabilität der Strategie hoffentlich verbessert werden.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


Verwandt

Mehr