
Überblick
Die Strategie basiert auf den von QuantNomad entwickelten UT Bot-Indikatoren und kombiniert die Idee des mobilen Stop-Losses. Der ursprüngliche Code wurde von @Yo_adriiiiaan geschrieben und von @HPotter geändert. Die Strategie wird in Zusammenarbeit mit LuxAlgo’s Smart Money Concepts verwendet werden. Die Strategie befindet sich derzeit in der Testphase.
Strategieprinzip
Die Hauptprinzipien der Strategie lauten wie folgt:
- Wenn der Schlusskurs über dem 50-Perioden-Simple Moving Average liegt, werden mehrere Trades getätigt.
- Für mehrköpfige Positionen, setzen Sie einen beweglichen Stop-Loss-Preis. Der bewegliche Stop-Loss-Preis ist 80% des aktuellen Schlusskurses (~ 1-20%). Der bewegliche Stop-Loss-Preis bewegt sich mit steigenden Preisen nach oben, aber nicht nach unten, wodurch die Gewinne geschützt werden.
- Für eine offene Position, setzen Sie auch einen beweglichen Stop-Loss-Preis. Der bewegliche Stop-Loss-Preis beträgt 120% des aktuellen Schlusskurses. Der bewegliche Stop-Loss-Preis bewegt sich nach unten, aber nicht nach oben.
- Die Berechnung des ATR beweglichen Stop-Preises erfolgt folgendermaßen: Wenn ein ATR nach oben bewegt, wird der vorherige ATR bewegliche Stop-Preis und der aktuelle Schlusskurs (ATR) genommen.*Key Value) ist der größere Wert von beiden; wenn man nach unten bewegt, nimmt man den vorherigen ATR, bewegt den Stop-Loss-Preis und den aktuellen Schlusskurs + den ATR*Key Value) ist der kleinere Wert von beiden. Key Value ist ein Parameter, der vom Benutzer eingestellt wird, um die Empfindlichkeit des mobilen Stopps zu regulieren.
- Haltet mehrere Positionen, wenn der Preis den ATR-Stop-Preis nach oben durchbricht. Haltet eine offene Position, wenn der Preis den ATR-Stop-Preis nach unten durchbricht.
Analyse der Stärken
- Eine mobile Stop-Loss-Einstellung schützt die Gewinne sehr gut und ermöglicht der Strategie, mehr zu erzielen, wenn sie sich im Trend befindet.
- Die Stop-Loss-Einstellungen für mehrköpfige und leere Positionen sind für verschiedene Situationen geeignet.
- Die Verwendung von ATR als Referenz für die Stop-Loss-Basis ermöglicht eine dynamische Anpassung der Stop-Loss-Position, die flexibler und effektiver ist.
- Es werden Key-Value-Parameter zur Optimierung bereitgestellt, die je nach Sorte und Zyklus angepasst werden können, um die Anpassungsfähigkeit zu verbessern.
Risikoanalyse
- In einem konjunkturellen Umfeld können häufige Stop-Losses zu einem Übermaß an Transaktionen führen, die Gebühren erhöhen und die Gewinne verringern.
- Die mobile Stop-Off-Methode mit einem festen Prozentsatz ist relativ einfach und kann in einigen Situationen nicht gut auf Preisschwankungen reagieren.
- Die Strategie berücksichtigt nur mobile Stop-Losses, ohne eine mobile Stop-Loss-Einstellung, und es kann sein, dass Sie einige Gewinnchancen verpassen.
- Die Auswahl der Parameter hat einen großen Einfluss auf die Strategie-Performance, und die falschen Parameter können zu einem größeren Rücknahme-Risiko führen.
Optimierungsrichtung
- Es kann in Kombination mit anderen Indikatoren oder Bedingungen, wie Handelsvolumen, Volatilität usw. in Betracht gezogen werden, um die Einstiegsbedingungen zu optimieren und die Zuverlässigkeit des Signals zu verbessern.
- Für die Berechnungsmethoden für den mobilen Stop können komplexere und effizientere Methoden erforscht werden, z. B. die Verwendung von Parabola-Stop, dynamischer Prozentsatz-Stop usw.
- Es kann ein Mechanismus mit einem mobilen Stop-Off hinzugefügt werden, z. B. ein dynamischer Stop-Off auf Basis von ATR oder Prozentsätzen, um die Gewinne besser zu sperren.
- Die Parameter können für verschiedene Sorten und Perioden optimiert werden, um die am besten geeignete Parameterkombination zu finden. Die Parameter können auch dynamisch angepasst werden, je nach Marktlage.
Zusammenfassen
Die Strategie basiert auf dem UT Bot-Indikator und enthält die Logik des mobilen Stopps, die die Gewinnschutzfunktion in Trendsituationen übernimmt. Die Strategie ist gleichzeitig sehr anpassungsfähig, indem sie Stop-Loss für mehrköpfige und leere Positionen einrichtet. Die Verwendung von ATR als Referenzbasis für den mobilen Stop-Loss ermöglicht die dynamische Anpassung der Stop-Loss-Position und erhöht die Flexibilität.
In der Zukunft kann die Strategie verbessert werden, um einen stabileren Gewinn zu erzielen, indem die Einstiegsbedingungen optimiert, komplexere mobile Stop-Methoden erforscht, mobile Stop-Mechanismen hinzugefügt und Parameter für verschiedene Sorten und Perioden optimiert werden. Insgesamt ist die Strategie einfach und leicht zu verstehen und umzusetzen, aber es gibt noch Raum für weitere Optimierungen, die es wert sind, weiter erforscht und verbessert zu werden.
Strategiequellcode
/*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")