UT-Bot-Indikator-basierte ATR-Trailing Stop-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-03-11 11:17:33
Tags:

img

Übersicht

Diese Strategie basiert auf dem von QuantNomad entwickelten UT Bot-Indikator und beinhaltet die Idee eines Trailing Stop Loss. Der ursprüngliche Code wurde von @Yo_adriiiiaan geschrieben und von @HPotter geändert. Die Strategie wird in Verbindung mit LuxAlgos Smart Money Concepts verwendet. Derzeit befindet sich die Strategie in der Testphase.

Strategieprinzip

Die wichtigsten Grundsätze dieser Strategie sind folgende:

  1. Wenn der Schlusskurs höher als der einfache gleitende Durchschnitt über 50 Perioden ist, wird ein Long-Handel eingegangen.
  2. Für Long-Positionen wird ein Trailing Stop Loss-Preis festgelegt. Der Trailing Stop Loss-Preis beträgt 80% (1-20%) des aktuellen Schlusskurses. Der Trailing Stop Loss-Preis bewegt sich mit steigenden Preisen nach oben, bewegt sich aber nicht nach unten, wodurch der Gewinn geschützt wird.
  3. Für Short-Positionen wird auch ein Trailing-Stop-Loss-Preis festgelegt. Der Trailing-Stop-Loss-Preis beträgt 120% (1+20%) des aktuellen Schlusskurses. Der Trailing-Stop-Loss-Preis bewegt sich mit fallenden Preisen nach unten, bewegt sich aber nicht nach oben.
  4. Die Berechnungsmethode für den ATR-Trailing-Stop-Preis besteht darin, dass beim Aufstieg der größere des vorherigen ATR-Trailing-Stop-Preises und (aktueller Schlusskurs - ATR * Schlüsselwert) genommen wird; beim Abstieg der kleinere des vorherigen ATR-Trailing-Stop-Preises und (aktueller Schlusskurs + ATR * Schlüsselwert).
  5. Auf der Grundlage des Durchbruchs des ATR Trailing Stop Preises wird die aktuelle Positionsrichtung bestimmt. Wenn der Preis über den ATR Trailing Stop Preis bricht, wird eine Long-Position gehalten; wenn der Preis unter den ATR Trailing Stop Preis bricht, wird eine Short-Position gehalten; in anderen Fällen bleibt der Status der aktuellen Position unverändert.

Analyse der Vorteile

  1. Die Einstellung des Trailing Stop kann den Gewinn wirksam schützen und es der Strategie ermöglichen, mehr Gewinne auf Trendmärkten zu erzielen.
  2. Die Festlegung von Stop-Losses für Long- und Short-Positionen kann sich an unterschiedliche Marktbedingungen anpassen.
  3. Die Verwendung von ATR als Referenz für den Stop-Loss ermöglicht eine dynamische Anpassung der Stop-Loss-Position, wodurch sie flexibler und effektiver wird.
  4. Der Parameter "Key Value" ist für die Benutzeroptimierung vorgesehen und kann entsprechend verschiedenen Sorten und Zyklen angepasst werden, um die Anpassungsfähigkeit zu verbessern.

Risikoanalyse

  1. In unruhigen Märkten können häufige Ausfälle zu übermäßigen Transaktionen führen, die Provisionskosten erhöhen und die Rendite senken.
  2. Die Festprozentsatz-Stopp-Methode ist relativ einfach und kann unter bestimmten Marktbedingungen möglicherweise nicht gut mit Preisschwankungen umgehen.
  3. Die Strategie berücksichtigt lediglich Nachschubstopps und legt keine Nachschubgewinnziele fest, die einige Gewinnchancen verpassen können.
  4. Die Auswahl der Parameter hat erhebliche Auswirkungen auf die Strategieergebnisse, und unangemessene Parameter können zu größeren Abzugsrisiken führen.

Optimierungsrichtung

  1. Andere Indikatoren oder Bedingungen, wie Handelsvolumen und Volatilität, können in Betracht gezogen werden, um die Einstiegsbedingungen zu optimieren und die Signalzuverlässigkeit zu verbessern.
  2. Für die Berechnungsmethode des Trailing Stop können komplexere und wirksamere Methoden untersucht werden, z. B. die Verwendung von parabolischen Stop-Loss oder dynamischen prozentualen Stop-Loss.
  3. Es kann beispielsweise ein Mechanismus zur Festlegung dynamischer Gewinnziele auf der Grundlage von ATR oder Prozentsätzen hinzugefügt werden, um den Gewinn besser zu sichern.
  4. Die Parameteroptimierung kann für verschiedene Sorten und Zyklen durchgeführt werden, um die am besten geeigneten Parameterkombinationen zu finden.

Zusammenfassung

Diese Strategie basiert auf dem UT Bot-Indikator und beinhaltet eine Trailing Stop Logik, die Gewinne in Trendmärkten schützen kann. Gleichzeitig setzt die Strategie Stop-Losses für lange und kurze Positionen getrennt, was sie sehr anpassungsfähig macht. Die Verwendung von ATR als Referenz für den Trailing Stop ermöglicht eine dynamische Anpassung der Stop-Loss-Position, was die Flexibilität verbessert. Diese Strategie kann jedoch aufgrund häufiger Stop-Outs in unruhigen Märkten mit hohen Transaktionskosten konfrontiert sein und fehlt eine Trailing-Gewinnzieleinstellung, die Gewinnchancen verpassen kann. Darüber hinaus hat die Wahl der Parameter einen erheblichen Einfluss auf die Strategieleistung.

In Zukunft kann die Strategie verbessert werden, indem die Einstiegsbedingungen optimiert, komplexere Trailing-Stop-Methoden erforscht, ein Trailing-Profit-Zielmechanismus hinzugefügt und Parameter für verschiedene Sorten und Zyklen optimiert werden, um eine stabilere Rendite zu erzielen.


/*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