- Quadrat
- UT-Bot-Indikator-basierte ATR-Trailing Stop-Strategie
UT-Bot-Indikator-basierte ATR-Trailing Stop-Strategie
Schriftsteller:
ChaoZhang, Datum: 2024-03-11 11:17:33
Tags:
Ü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:
- Wenn der Schlusskurs höher als der einfache gleitende Durchschnitt über 50 Perioden ist, wird ein Long-Handel eingegangen.
- 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.
- 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.
- 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).
- 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
- Die Einstellung des Trailing Stop kann den Gewinn wirksam schützen und es der Strategie ermöglichen, mehr Gewinne auf Trendmärkten zu erzielen.
- Die Festlegung von Stop-Losses für Long- und Short-Positionen kann sich an unterschiedliche Marktbedingungen anpassen.
- 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.
- 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
- In unruhigen Märkten können häufige Ausfälle zu übermäßigen Transaktionen führen, die Provisionskosten erhöhen und die Rendite senken.
- Die Festprozentsatz-Stopp-Methode ist relativ einfach und kann unter bestimmten Marktbedingungen möglicherweise nicht gut mit Preisschwankungen umgehen.
- Die Strategie berücksichtigt lediglich Nachschubstopps und legt keine Nachschubgewinnziele fest, die einige Gewinnchancen verpassen können.
- Die Auswahl der Parameter hat erhebliche Auswirkungen auf die Strategieergebnisse, und unangemessene Parameter können zu größeren Abzugsrisiken führen.
Optimierungsrichtung
- 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.
- 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.
- 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.
- 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