Diese Strategie ist eine Dynamikstrategie, die auf gleitenden Durchschnittslinien basiert. Sie erzeugt Handelssignale, indem sie einfache gleitende Durchschnitte verschiedener Perioden berechnet und ihre Überschreitungssituationen vergleicht. Insbesondere wird ein Kaufsignal erzeugt, wenn die kurzfristige gleitende Durchschnittslinie über die langfristige gleitende Durchschnittslinie kreuzt; wenn die kurzfristige gleitende Durchschnittslinie unter die langfristige gleitende Durchschnittslinie kreuzt, wird ein Verkaufssignal erzeugt.
Die Kernlogik dieser Strategie basiert auf dem Momentum-Effekt, der die Beständigkeit der Aktienpreistendenzen ist. Bewegliche Durchschnittslinien können den Veränderungstrend der Aktienkurse effektiv widerspiegeln. Wenn die kurzfristige gleitende Durchschnittslinie über die langfristige gleitende Durchschnittslinie überschreitet, bedeutet dies, dass der Aktienkurs einen Aufwärtstrend beginnt; im Gegenteil, wenn die kurzfristige gleitende Durchschnittslinie unter die langfristige gleitende Durchschnittslinie überschreitet, bedeutet dies, dass der Aktienkurs einen Abwärtstrend beginnt. Diese Strategie erzeugt Handelssignale, die auf diesem Prinzip basieren.
Insbesondere werden ein 13-tägiger einfacher gleitender Durchschnitt und ein 34-tägiger einfacher gleitender Durchschnitt in der Strategie definiert. Nachdem diese beiden gleitenden Durchschnitte auf der Grundlage des täglichen Schlusskurses berechnet wurden, wird ihr Größenverhältnis verglichen. Wenn die 13-tägige Linie über die 34-tägige Linie geht, wird ein Kaufsignal generiert, das anzeigt, dass der Aktienkurs einen Aufwärtstrend betritt und eine Long-Position eingerichtet werden sollte; wenn die 13-tägige Linie unter die 34-tägige Linie geht, wird ein Verkaufssignal generiert, das anzeigt, dass der Aktienkurs einen Abwärtstrend betritt und die Position geschlossen werden sollte.
Der größte Vorteil dieser Strategie besteht darin, dass sie einfach und leicht zu verstehen und umzusetzen ist. Die gleitende Durchschnittslinie ist einer der grundlegendsten und am häufigsten verwendeten technischen Indikatoren. Ihr Prinzip ist einfach und leicht zu verstehen und anzuwenden. Gleichzeitig hat sich das gleitende Durchschnittslinie-Kreuzungssignal auch durch langfristige Praxis als wirksam erwiesen.
Darüber hinaus ist die Parameter-Einstellung dieser Strategie flexibel und kann je nach verschiedenen Sorten und Marktbedingungen angepasst werden. Zum Beispiel können die Zyklusparameter der gleitenden Durchschnittslinie geändert werden, um die Empfindlichkeit der Strategie anzupassen. Dies bietet Raum für die Optimierung und Anpassung der Strategie.
Das größte Risiko dieser Strategie besteht darin, dass es mehr falsche Signale geben kann und man in Bereichsmärkten gefangen wird. Wenn die Preise stark schwanken, können gleitende Durchschnittslinien häufige Crossovers erzeugen, was zu falschen Signalen führt. Zu diesem Zeitpunkt müssen Sie die Zyklusparameter der gleitenden Durchschnittslinie anpassen, um etwas Rauschen zu filtern.
Darüber hinaus kann bei einer größeren Umkehr des Marktes der Stop-Loss-Punkt der Strategie durchbrochen werden, was zu größeren Verlusten führt.
Die folgenden Aspekte dieser Strategie können optimiert werden:
Optimieren der Zyklusparameter der gleitenden Durchschnittslinie, um die optimale Kombination von Parametern für verschiedene Sorten und Marktbedingungen zu finden.
Hinzufügen einer Filtration anderer technischer Indikatoren wie MACD und KD, um falsche Signale in Bereichsgebundenen Märkten zu vermeiden.
Optimierung und dynamische Anpassung der Stop-Loss-Strategie, um zu vermeiden, dass der Stop-Loss-Punkt zu nahe ist und gleichzeitig den Stop-Loss mit einer höheren Wahrscheinlichkeit des Durchbruchs gewährleistet.
Erhöhung der Positionsmanagementmechanismen wie Fixinvestitionen und Positionsquote zur Kontrolle des Einzeltransaktionsrisikos.
Diese Strategie ist eine sehr klassische gleitende Durchschnitts-Crossover-Strategie. Sie erzeugt Kauf- und Verkaufssignale, indem sie die Beziehung zwischen kurzfristigen und langfristigen gleitenden Durchschnitten berechnet und vergleicht. Die Vorteile dieser Strategie sind einfache, flexible Parameter und für Anfänger geeignet; die Nachteile sind, dass die Signale möglicherweise nicht stabil genug sind und es leicht ist, in Bereichsmärkten gefangen zu werden. Mit der richtigen Optimierung kann sie immer noch eine sehr praktische quantitative Strategie werden.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // TODO: update strategy name strategy("{STRATEGY NAME}", overlay=true) // === TA LOGIC === // // // TODO: PUT YOUR TA LOGIC HERE LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34)) SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21)) // === INPUT BACKTEST DATE RANGE === enableShorts = input(false, title="Enable short entries?") FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2018, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === STRATEGY BUY / SELL ENTRIES === // TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal // long and short entries buy() => window() and LONG_SIGNAL_BOOLEAN sell() => window() and SHORT_SIGNAL_BOOLEAN if buy() strategy.entry("Long", strategy.long, comment="Long") if sell() if (enableShorts) strategy.entry("Short", strategy.short, comment="Short") else strategy.close("Long") // === BACKTESTING: EXIT strategy === sl_inp = input(10, title='Stop Loss %', type=float)/100 tp_inp = input(30, title='Take Profit %', type=float)/100 stop_level = strategy.position_avg_price * (1 - sl_inp) take_level = strategy.position_avg_price * (1 + tp_inp) strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)