Adaptive Trendverfolgungs-Stop-Loss-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-17 14:04:28
Tags:

img

Übersicht

Diese Strategie verwendet die Wilder Volatility Trailing Stop-Methode in Kombination mit dem ATR-Indikator und verschiedenen Arten von gleitenden Durchschnitten, um eine anpassungsfähige Trend-Tracking-Stop-Loss-Strategie umzusetzen.

Strategie Logik

Der Kern dieser Strategie ist der Wilder Volatility Trailing Stop Algorithmus. Er berechnet zuerst den ATR-Indikator und zeichnet dynamisch die Stop-Loss-Linie nach der eingegebenen ATR-Länge und dem Multiplikator auf. Er verfolgt dann die höchste Höchst- und die niedrigste Tiefe der Stop-Loss-Linie basierend auf der gewählten Preisoption zwischen Schließ-, Hoch- und Tiefpreisen. Er sendet Handelssignale, wenn der Preis die Stop-Loss-Linie bricht.

In dem Code implementiert die Funktion f_ma verschiedene gleitende Durchschnitte, darunter RMA, EMA, SMA und Hull MA. Der ATR-Indikator wird berechnet und durch den vom Benutzer definierten Multiplikator multipliziert, um die volatilitätsbasierte Trailing-Stop-Linie zu generieren. Die höchsten und niedrigsten Ebenen dieser Linie werden mithilfe der höchsten und niedrigsten Funktionen verfolgt. Die Trades werden getätigt, wenn der Preis diese Trailing-Stop-Linie durchdringt.

Durch die flexible Nutzung des ATR-Indikators, verschiedener gleitender Durchschnitte und verstellbarer Parameter realisiert diese Strategie ein hoch adaptives Trend-Tracking-Stop-Loss-System.

Analyse der Vorteile

  • Diese Strategie nutzt den Wilder Volatility Trailing Stop-Algorithmus, der eine ausgereifte und zuverlässige Trendverfolgungs-Stop-Loss-Methodik ist.

  • Die Strategie verwendet den ATR-Indikator, um die Stop-Loss-Linie dynamisch zu berechnen, wobei starre Stop-Loss-Punkte vermieden werden.

  • Die Umsetzung verschiedener gleitender Durchschnitte, darunter RMA, EMA, SMA und Hull MA, erhöht die Anpassungsfähigkeit der Strategie.

  • Durch die Anpassung der ATR-Länge können Multiplikatorparameter, optimierte Parameter für verschiedene Märkte gefunden werden, wodurch die Strategieleistung verbessert wird.

  • Die Verwendung verschiedener Preisoptionen wie hohe, niedrige und nahe Preise ermöglicht die Optimierung verschiedener Produkte.

  • Zusammenfassend ist dies eine zuverlässige, anpassungsfähige und leicht optimierbare Trendverfolgungs-Stop-Loss-Strategie.

Risikoanalyse

  • Die Strategie stützt sich stark auf die Optimierung von Parametern. Durch Tests für verschiedene Märkte und Produkte müssen geeignete ATR- und Multiplikatorparameter gefunden werden, da der Stop-Loss-Effekt sonst möglicherweise nicht ideal ist.

  • In den Schwellenmärkten kann die ATR-Stop-Loss-Linie häufige ungerechtfertigte Stop-Outs auslösen. Um dies zu optimieren, müssen Trendfilterindikatoren eingeführt werden.

  • Wenn die Stop-Loss-Linie zu breit ist, werden Verlustmöglichkeiten verpasst. Wenn sie zu eng ist, werden die Handelsfrequenz und die Rutschkosten steigen. Ein ausgewogener Punkt muss durch sorgfältiges Testen gefunden werden.

  • Zu viele gleitende Durchschnittsoptionen können zu Leistungsabweichungen führen. Für jedes Produkt sollte ein großer gleitender Durchschnittswert ausgewählt werden, andere nur als Referenz.

  • Diese Strategie konzentriert sich auf die Trendverfolgung und zielt nicht direkt auf Gewinne ab. Sie muss mit anderen Eintritts-/Austrittsstrategien oder Gewinntechniken kombiniert werden.

  • Bei unpassenden Parametern kann die Strategie übermäßige Handels- oder überdimensionierte Haltezeiten aufweisen.

Optimierungsrichtlinien

  • Es können Trend-Identifikationsindikatoren eingeführt werden, um Whipsaws in unterschiedlichen Märkten zu vermeiden.

  • Umkehrindikatoren können so getestet werden, dass ein schnellerer Stopp und Umkehr bei Wechsel von Aufwärtstrend und Abwärtstrend möglich ist.

  • Der ATR-Period-Parameter kann mit Produktmerkmalen korreliert werden, so dass für verschiedene Produkte unterschiedliche ATR-Perioden verwendet werden.

  • Volumenindikatoren können verwendet werden, um die Stop-Loss-Linie schneller zu verschärfen, wenn das Volumen deutlich sinkt.

  • Der Stop-Loss-Prozentsatz kann erhöht werden, jedoch nicht zu eng, um bei normalen Retracements zu vermeiden.

  • Andere Indikatoren können verwendet werden, um die Dynamik zu messen und die Parameter zu optimieren, um Stopps zu lockern, wenn die Dynamik schwach ist.

Zusammenfassung

Diese Strategie basiert auf dem Konzept des Wilder Volatility Trailing Stop und nutzt den ATR-Indikator, um ein äußerst anpassungsfähiges Trend-Tracking-Stop-Loss-System zu entwerfen. Durch die Optimierung der Parameter kann sie auf verschiedene Handelsprodukte angepasst werden und ist ein zuverlässiger und praktischer Stop-Loss-Ansatz.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary

//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)

AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])

//function for choosing moving averages
f_ma(type, src, len) =>
    float result = 0
    if type == "RMA" // Wilder's moving averaege or Running moving average
        result := rma(src, len)
    if type == "EMA" // Exponential moving average
        result := ema(src, len)
    if type == "SMA" // Simple moving average
        result := sma(src, len)
    if type == "HULL" // Hull moving average
        result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
    result

ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR

float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS

//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)

//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS

strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)

Mehr