Trendfolgende Average True Range Stop-Loss-Strategie

ATR TS
Erstellungsdatum: 2024-05-24 18:12:01 zuletzt geändert: 2024-05-24 18:12:01
Kopie: 8 Klicks: 521
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgende Average True Range Stop-Loss-Strategie

Überblick

Die Strategie nutzt die durchschnittliche tatsächliche Breite (ATR) als Grundlage für die Verfolgung von Stop Losses (TS), um den Trend zu verfolgen, indem die Stop Loss Position dynamisch angepasst wird. Wenn der Preis in eine günstige Richtung bewegt, wird die Stop Loss Position angepasst, um die erzielten Gewinne zu sperren. Wenn der Preis in eine nachteilige Richtung bewegt, bleibt die Stop Loss Position unverändert, und sobald der Preis die Stop Loss-Preise erreicht, wird die Stop Loss-Position ausgeglichen.

Strategieprinzip

  1. Die ATR ist die Grundlage für die Berechnung von Stop-Losses. Die ATR spiegelt die Volatilität des Marktes wider und dient als Mittelwert für die Preisänderungen.
  2. Die Stop-Loss-Distanz nLoss wird anhand der ATR- und KeyValue-Parameter berechnet. KeyValue ist ein Multiplikator des benutzerdefinierten Wertes, nLoss ist die Multiplikation von KeyValue und ATR, was bedeutet, dass die Stop-Loss-Distanz ein Vielfaches von ATR ist.
  3. Berechnen Sie die dynamische Tracking-Stopp-Position xATRTrailingStop. Wenn Sie mehrere Positionen halten, setzen Sie sie als “größere der beiden höchsten Preise der vorherigen K-Linie und der Abschlusspreis - nLoss”; wenn Sie keine Positionen halten, setzen Sie sie als “kleinere der beiden niedrigsten Preise der vorherigen K-Linie und der Abschlusspreis + nLoss”.
  4. Erzeugen Sie ein Positionsöffnungssignal. Wenn Sie einen xATRTrailingStop über dem Schlusskurs durchschreiten, machen Sie mehr; wenn Sie einen xATRTrailingStop unter dem Schlusskurs durchschreiten, machen Sie leer.

Analyse der Stärken

  1. Die Stop-Loss-Position kann sich dynamisch an die Preisschwankungen anpassen, um Gewinne zu blockieren, aber auch um Gewinne zu erweitern, wenn der Trend fortgesetzt wird.
  2. Die Stop-Loss-Position basiert auf der ATR-Berechnung und kann die Marktvolatilität objektiv widerspiegeln und ist flexibler und effektiver als die subjektiv eingestellten festen Stop-Losses.
  3. Durch die Erhöhung des ATR durch die KeyValue-Parameter kann die entsprechende Stop-Distance entsprechend der eigenen Risikopräferenz eingestellt werden. Ein größerer KeyValue führt zu einem breiteren Stop-Space und einer geringeren Stop-Frequenz.

Risikoanalyse

  1. Trend-basierte Strategien schneiden in einem schwankenden Markt schlecht ab, und wenn ein einseitiger Trend nicht sichtbar ist, werden sie häufig eingestellt, was zu einem schnellen Kapitalverlust führt.
  2. Die Eintrittszeit hängt von der Kreuzung des Schlusskurses mit der dynamischen Stop-Line ab. In einem wackligen Umfeld kann es zu einer Folge von kleinen Stopps kommen.
  3. Die Stop-Loss-Strategie verhindert nicht, dass die Schlupflöcher, die durch Riesen oder Lido verursacht werden, verhindert werden. Die Stop-Loss-Positionsanpassung kann nicht mit der Geschwindigkeit der Preisänderungen mithalten, was zu einem tatsächlichen Verlust führt, der viel größer ist als der erwartete kontrollierbare Verlust.

Optimierungsrichtung

  1. Sie können auf der Grundlage von Strategien Trends zu bestimmen, Indikatoren, wie die Gleichgewichts-System, Dynamik-Indikatoren und so weiter, nur in den Markt eintreten, wenn der Trend klar ist, zu vermeiden, häufige Handel in den Schaukelmarkt.
  2. Es kann in Betracht gezogen werden, Stop-Off-Strategien einzuführen, wie z. B. die Berechnung von Positionspositionen nach der Kelly-Formel, die Einrichtung von Stop-Off-Strecken für die Einnahme von Fixed-Earnings-Strecks, um die Möglichkeit einer potentiellen Gewinnrückkehr am Ende des Trends zu verringern.
  3. Für die Hüpfen-Lücke kann eine maximale Stop-Limit wie ein fester Betrag oder ein fester Prozentsatz festgelegt werden, der sofort aufhört, wenn die Grenze erreicht wird, unabhängig davon, wo der dynamische Stop-Loss liegt.

Zusammenfassen

Die ATR-Stop-Strategie ist in der Lage, die Stop-Position dynamisch an die Preisschwankungsbreite anzupassen und kann in Trendsituationen gute Ergebnisse erzielen. Die Strategie besteht jedoch auch aus dem Risiko, dass sie nicht in der Lage ist, auf schwankende Märkte, zu häufige Stopps und schwer vermeidbare Lücke zu reagieren. Angesichts der oben genannten Mängel kann die Strategie optimiert und verbessert werden.

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