Diese Strategie erzeugt Handelssignale, die auf der Verknüpfung von einfachen gleitenden Durchschnitten und gewichteten gleitenden Durchschnitten basieren, kombiniert mit Stop Loss und Take Profit, um Positionen zu verwalten.
Die Kernlogik besteht darin, zwei gleitende Durchschnitte mit unterschiedlichen Perioden zu berechnen, einer ist der 9-tägige einfache gleitende Durchschnitt und der andere ist der 21-tägige gewichtete gleitende Durchschnitt. Wenn der kurzfristige 9-tägige SMA über die langfristige 21-tägige WMA überschreitet, wird ein Kaufsignal generiert. Wenn die kurzfristige Linie unter die langfristige Linie überschreitet, wird ein Verkaufssignal generiert.
Nach Erhalt des Signals werden die Aufträge nach den festgelegten Stop-Loss- und Take-Profit-Verhältnissen platziert. Zum Beispiel wird der Stop-Loss-Verhältnis bei 5% festgelegt, dann wird der Stop-Loss-Preis bei 95% des Einstiegspreises festgelegt. Wenn die Take-Profit-Verhältnis ist 5%, dann wird der Take-Profit-Preis bei 105% des Einstiegspreises festgelegt. Dies realisiert die Fusion von dynamischen Faktoren (bewegliche Durchschnittskreuzung, die Ein- und Ausstiegszeit bestimmt) und statischen Faktoren (feste Stop-Loss- und Take-Profit-Verhältnisse).
Die Strategie kombiniert dynamische technische Indikatoren und statische Strategieparameter und besitzt die Vorteile sowohl dynamischer als auch statischer Systeme. Technische Indikatoren können dynamisch Marktmerkmale erfassen, was für die Erfassung von Trends von Vorteil ist. Parameter-Einstellungen bieten eine stabile Risiko- und Rendite-Kontrolle, die dazu beiträgt, die Zufälligkeit im Positionsmanagement zu reduzieren.
Im Vergleich zu reinen dynamischen Systemen ist diese Strategie robuster im Positionsmanagement, was die Auswirkungen irrationaler Entscheidungen reduziert. Im Vergleich zu reinen statischen Systemen ist diese Strategie flexibler bei der Eintrittswahl, was sich besser an Marktveränderungen anpasst. Daher hat diese Strategie eine gute Gesamtrobustheit und Rentabilität.
Die Risiken dieser Strategie stammen hauptsächlich aus zwei Aspekten. Erstens die Möglichkeit falscher Signale aus den gleitenden Durchschnitten. Wenn der Markt im Bereich ist, können die gleitenden Durchschnitte häufige Überschneidungen aufweisen, wodurch die Strategie verzerrt wird.
Zweitens kann sich das Risiko, dass festgelegte Stop Loss und Take Profit nicht an extreme Marktbedingungen angepasst werden können.
Die Gegenmaßnahmen sind: erstens, Schlüsselzeitknoten zu vermeiden, um die Wahrscheinlichkeit falscher Signale zu verringern; zweitens, adaptive Stop-Loss-Algorithmen entsprechend der Marktvolatilität und besonderen Ereignissen zu aktivieren, wodurch Stop-Loss und Take-Profit mit dem Markt angepasst werden.
Diese Strategie kann aus folgenden Gesichtspunkten optimiert werden:
Versuche verschiedene Parameterkombinationen, um die optimalen Parameter zu finden;
Hinzufügen von Filterbedingungen, um ungültige Signale zu vermeiden;
Anwendungen für die Anpassung an die Marktlage
Einbeziehung anderer Indikatoren zur Beurteilung der Trendstärke und Vermeidung von Bandbreitenmärkten;
Verwenden Sie maschinelle Lernmethoden zur automatischen Optimierung von Parametern.
Durch das Testen von Parametern, das Hinzufügen von Filtern, die Verbesserung von Stopps, die Beurteilung von Trends usw. können die Stabilität und Rentabilität der Strategie weiter verbessert werden.
Die Strategie kombiniert erfolgreich dynamische Indikatoren und statische Parameter, die Flexibilität und Robustheit ausgleichen. Im Vergleich zu reinen dynamischen und statischen Strategien ist diese Strategie insgesamt besser. Natürlich gibt es noch Raum für Optimierungen durch Anpassung von Parametern, Hinzufügen von Filtern, adaptive Stopps, maschinelles Lernen usw., um die Strategie effektiver zu machen.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("WMA vs MMA Crossover Strategy with SL/TP", shorttitle="WMA_MMA_Cross_SL_TP", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Définition des périodes pour les moyennes mobiles wmaLength = input.int(9, title="WMA Length") mmaLength = input.int(21, title="MMA Length") // Paramètres de Stop Loss et Take Profit en pourcentage stopLossPercentage = input.float(5, title="Stop Loss (%)") / 100 takeProfitPercentage = input.float(5, title="Take Profit (%)") / 100 // Calcul des moyennes mobiles wmaValue = ta.wma(close, wmaLength) mmaValue = ta.sma(close, mmaLength) // Conditions pour les signaux d'achat et de vente buySignal = ta.crossover(wmaValue, mmaValue) sellSignal = ta.crossunder(wmaValue, mmaValue) // Génération des ordres en fonction des signaux if buySignal strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=strategy.position_avg_price * (1 - stopLossPercentage), limit=strategy.position_avg_price * (1 + takeProfitPercentage)) if sellSignal strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=strategy.position_avg_price * (1 + stopLossPercentage), limit=strategy.position_avg_price * (1 - takeProfitPercentage)) // Affichage des moyennes mobiles sur le graphique plot(wmaValue, color=color.blue, title="WMA") plot(mmaValue, color=color.red, title="MMA") // Affichage des signaux sur le graphique pour référence plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")