Die gleitende Durchschnitts-Crossover-Strategie ist eine quantitative Handelsstrategie, die auf einfachen gleitenden Durchschnitten (SMA) basiert.
Insbesondere berechnet diese Strategie den 9-Perioden- und den 45-Perioden-SMA. Wenn der Preis über beide SMA-Linien kreuzt, wird ein Kaufsignal generiert. Wenn der Preis unter beiden Linien kreuzt, wird ein Verkaufssignal ausgelöst.
Die Kernlogik dieser Strategie basiert auf den
Diese Strategie verwendet insbesondere die 9-Perioden- und 45-Perioden-einfachen gleitenden Durchschnitte. Die 9-Perioden-Linie repräsentiert kurzfristige Trends, während die 45-Perioden-Linie längerfristige Trends erfasst. Wenn der Preis über beide SMA-Linien kreuzt, zeigt er an, dass sich der Preis sowohl kurz- als auch langfristig in Aufwärtsträgern befindet, wodurch ein langer Einstieg ausgelöst wird. Der entgegengesetzte Crossover deutet auf eine Schwächung der Aufwärtstrend hin und veranlasst Ausgangssignale.
Aus der Code-Perspektive berechnet die Strategie zunächst die 9-Perioden- und 45-Perioden-SMA-Werte. Sie verwendet dann die Ta.Crossover- und Ta.Crossunder-Funktionen, um goldene Kreuzungen und tote Kreuzungen zwischen den beiden MA-Linien zu erkennen.
Darüber hinaus wird die Stop-Loss-Logik implementiert, um Handels-Ausgänge zu verwalten. Insbesondere werden die hohen und niedrigen Preise der vorherigen Bar als Stop-Loss-Preis nach Eröffnung neuer Trades extrahiert. Dies ermöglicht es der Strategie, Gewinne zu erzielen und große Verluste zu vermeiden.
Die doppelte gleitende Durchschnittskonfiguration erfasst mittelfristige bis langfristige Trendveränderungen und filtert gleichzeitig kurzfristige Geräusche aus und verbessert so die Signalqualität.
Der Stop-Loss-Mechanismus kontrolliert Risiken und Gewinne effektiv.
Einfache und einfach umsetzbare Logik, geeignet für Anfänger.
Hohe Kapitalnutzung für Verbundgewinne.
Dual-MA-Strategien neigen dazu, während unruhiger Märkte Whipsaws und ungültige Signale zu erzeugen.
Konservative Stop-Loss-Platzierung, die Trends nicht effektiv verfolgen kann.
Eine nicht optimale Parameterwahl kann zu einem Überhandel oder zu einer unzureichenden Handelsfrequenz führen.
Unfähig, sich an große Trendumkehrungen anzupassen.
Lösungen:
Optimierung der MA-Parameter zur Verringerung falscher Signale
Implementieren von trendfolgende dynamische Stopps
Filter mit anderen Indikatoren hinzufügen
Manuelle Übernahme bei großen Umkehrungen
Weitere Verbesserungen der Strategie:
Verwenden Sie adaptive oder exponentielle MAs, um Trends besser zu erfassen.
Fügen Sie einen Volatilitätsfilter hinzu, um falsche Signale während der Wechselkurse zu vermeiden.
Parameteroptimierung für beste Parameterkombinationen durchführen.
Einbeziehung von Trend-Folge-Mechanismen in die Stop-Loss-Logik.
Hinzufügen von Unterstützungs-Widerstandsanalysen, um Signale um Schlüsselniveaus zu vermeiden.
Nutzen Sie maschinelles Lernen, um die Signalqualität weiter zu filtern.
Das gleitende Durchschnitts-Crossover-System ist ein einfacher, aber effektiver Trendfolgungsansatz. Durch das Filtern von Rauschen und die Verfolgung mittelfristiger Trends erzeugt es Qualitätssignale. Mit angemessenen Stop-Losses ermöglicht es einen risikogesteuerten Trendhandel. Die einfache Logik macht es auch ideal für Anfänger.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy", overlay=true) // Input parameters fast_length = input(9, title="Fast SMA Length") slow_length = input(45, title="Slow SMA Length") // Calculate moving averages fast_sma = ta.sma(close, fast_length) slow_sma = ta.sma(close, slow_length) // Buy condition buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma) // Sell condition sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma) // Calculate stop loss levels prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on) prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on) // Plot signals on the chart plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit conditions long_stop_loss = sell_condition ? prev_low : na short_stop_loss = buy_condition ? prev_high : na strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss) strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss) strategy.entry("Long", strategy.long, when=buy_condition) strategy.entry("Short", strategy.short, when=sell_condition)