Dynamische Strategie zur Verzögerung der Verzögerung basierend auf ATR und SMA

Schriftsteller:ChaoZhang, Datum: 2024-03-11 11:55:21
Tags:

img

Übersicht

Diese Strategie kombiniert den ATR (Average True Range) Indikator und den SMA (Simple Moving Average) Indikator, um ein dynamisches Trailing Stop Trading System zu implementieren. Wenn der Preis über dem SMA liegt, eröffnet er eine Long-Position und setzt einen dynamischen Stop-Loss basierend auf ATR. Der Stop-Loss-Preis steigt weiter, wenn der Preis steigt. Wenn der Preis unter den dynamischen Stop-Loss-Preis fällt, wird die Position geschlossen. Die Hauptidee dieser Strategie besteht darin, Gewinne zu sperren und Trendmärkte mit einem dynamischen Stop-Loss zu reduzieren.

Strategieprinzipien

  1. Berechnen Sie den 50-Tage-SMA. Wenn der Schlusskurs größer ist als der 50-Tage-SMA, öffnen Sie eine Long-Position.
  2. Der ATR-Indikator wird mit einer Periode von 10 multipliziert mit einem Schlüsselwaert (Standardwert 3) berechnet, um den Stop-Loss-Bereich nLoss zu erhalten.
  3. Berechnen Sie den dynamischen Stop-Loss-Preis xATRTrailingStop mit einem Anfangswert von 0.
    • Wenn der Schlusskurs und der vorherige Schlusskurs beide größer sind als der vorherige Stop-Loss-Kurs, ist der neue Stop-Loss-Kurs der größere des vorherigen Stop-Loss-Kurses und (Schlusskurs - nLoss).
    • Wenn der Schlusskurs und der vorherige Schlusskurs beide unter dem vorherigen Stop-Loss-Kurs liegen, ist der neue Stop-Loss-Kurs der kleinere des vorherigen Stop-Loss-Kurses und (Schlusskurs + nLoss).
    • In anderen Fällen ist der neue Stop-Loss-Preis (Schlusskurs - nLoss) oder (Schlusskurs + nLoss).
  4. Wenn der Schlusskurs unter den dynamischen Stop-Loss-Kurs fällt, schließt man die Position.
  5. Die Stop-Loss-Punkte sind in verschiedenen Farben gekennzeichnet: grün für den langen Stop-Loss, rot für den kurzen Stop-Loss und blau für andere Fälle.

Analyse der Vorteile

  1. Der dynamische Stop-Loss-Mechanismus kann die Gewinne schützen und das Drawdown-Risiko in Trendmärkten reduzieren.
  2. Der Stop-Loss-Bereich wird anhand des ATR-Indikators berechnet. ATR kann die Größe der Marktvolatilität gut widerspiegeln, so dass sich die Stop-Loss-Distanz automatisch an die Volatilität der jüngsten Marktbedingungen anpasst. Sie erhöht den Stop-Loss-Raum, wenn die Volatilität steigt, und reduziert den Stop-Loss-Raum, wenn die Volatilität abnimmt.
  3. Die Verwendung von SMA als Basis für die Beurteilung von Trends kann relativ klare Trendmärkte erfassen.
  4. Ermöglicht es den Nutzern, die ATR-Periode und die Kennwerte festzulegen, wodurch die Strategieparameter flexibel an die Merkmale der verschiedenen Sorten und Zyklen angepasst werden können.

Risikoanalyse

  1. In unklaren oder schwankenden Märkten kann diese Strategie häufige Eröffnungen und Schließungen von Positionen mit sich bringen, was zu erhöhten Transaktionskosten und geringeren Gewinnen führt.
  2. Diese Strategie hat nur eine lange Logik und kann nicht in einem Abwärtstrend profitieren, da sie das Risiko eines einseitigen Marktes birgt.
  3. Der Stop-Loss-Punkt basiert auf der ATR-Berechnung. Wenn der Markt heftig schwankt, kann der Stop-Loss-Raum zu groß sein, was zu einem erhöhten Risiko führt.
  4. Eine unsachgemäße Parameterwahl kann zum Strategieversagen führen. Wenn die ATR-Periode zum Beispiel zu klein ist, kann dies zu überempfindlichen Stop-Loss und häufigen Auslösern führen; wenn sie zu groß ist, kann sie den Verlust nicht rechtzeitig stoppen und die Verluste verstärken.

Optimierungsrichtung

  1. Sie können eine Short-Position eröffnen, wenn der Preis unter den SMA fällt, und auch eine dynamische Stop-Loss-Logik verwenden.
  2. Einführung von Long- und Short-Positionsmanagement, um die Positionsgröße an die Trendstärke anzupassen; Erhöhung der Positionen, wenn der Trend stark ist, um die Rendite zu erhöhen; Verringerung der Positionen, wenn der Trend schwach ist, um das Risiko zu kontrollieren.
  3. Optimieren Sie die Stop-Loss-Logik und setzen Sie einen maximalen Stop-Loss-Bereich ein, um in extremen Situationen übermäßige Verluste zu vermeiden.
  4. Optimieren von Parametern, indem Sie verschiedene Parameterkombinationen durchqueren, um die besten Parameter-Einstellungen zu finden.
  5. Es sollte in Erwägung gezogen werden, weitere Filterbedingungen wie Handelsvolumen- und Volatilitätsindikatoren hinzuzufügen, um Trends und Risiken besser abzuschätzen und die Zuverlässigkeit der Signale zu verbessern.

Zusammenfassung

Diese Strategie implementiert ein dynamisches Trailing Stop Trading System, das auf den Indikatoren ATR und SMA basiert und die Stop-Loss-Position in Trendmärkten automatisch anpassen kann, um Gewinne zu schützen und Risiken zu kontrollieren. Die Strategielogik ist klar und hat offensichtliche Vorteile, hat aber auch einige Einschränkungen und Risikopunkte. Durch angemessene Optimierung und Verbesserung, wie das Hinzufügen von Kurzlogik, Optimierung des Positionsmanagements, Festlegen eines maximalen Stop Losses usw., können die Robustheit und Rentabilität der Strategie weiter verbessert werden. In praktischen Anwendungen ist es notwendig, die Strategieparameter flexibel entsprechend verschiedenen Handelsvarianten und -zyklen anzupassen und Risiken streng zu kontrollieren. Im Allgemeinen bietet diese Strategie eine machbare Idee für den quantitativen Handel und ist der weiteren Erforschung und Optimierung würdig.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")

Mehr