Die Durchbruchstrategie ist eine typische quantitative Handelsstrategie, die Trends verfolgt. Diese Strategie verwendet gleitende Durchschnitte und ihre Standardabweichungsbänder, um Markttrends zu beurteilen und Handelssignale zu generieren, wenn die Preise die Standardabweichungsbänder durchbrechen.
Die Strategie berechnet zunächst den einfachen gleitenden Durchschnitt SMA für N Tage (Standard 50-Tage) und berechnet dann die Standardabweichung StdDev des Preises auf der Grundlage des SMA für diesen Zyklus. Mit dem SMA als Mittelachse und den oberen und unteren Schienen als 2-mal StdDev wird der
Nach dem Markteintritt setzt die Strategie Stop-Loss- und Take-Profit-Punkte ein. Speziell ist nach dem Long-Going die Stop-Loss-Linie der Schlusskurs zum Zeitpunkt des Eintritts (100 - Stop-Loss-Prozent); nach dem Short-Going ist die Take-Profit-Linie der Schlusskurs zum Zeitpunkt des Eintritts (100 + Take-Prozent).
Die Strategie weist folgende Vorteile auf:
Durch die Verwendung von Standardabweichungskanälen können Marktfluktuationen dynamisch verfolgt werden.
Durch die Verwendung mobiler Stoppverluste können einzelne Verluste wirksam kontrolliert werden.
Einfache Implementierung. Spart eine Menge Parameteroptimierung und ist sehr einfach zu implementieren.
Die Strategie birgt auch einige Risiken:
Trend-Tracking-Strategien sind anfällig für Verluste und dann Umkehrungen.
Parameterempfindlichkeitsrisiko: Die Wahl von Parametern wie beispielsweise gleitender Durchschnittsperiode und Standardabweichungsmultiplikator hat einen größeren Einfluss auf die Strategieergebnisse.
Eine falsche Einstellung des Stop-Loss-Punkts kann zusätzliche Verluste verursachen.
Die Lösungen für die entsprechenden Risiken sind wie folgt:
Kombination von Volatilitätsindikatoren, um falsche Ausbrüche zu vermeiden.
Parameter optimieren, um die optimale Parameterkombination zu finden.
Der Stop-Loss-Mechanismus wird angepasst, um eine übermäßige Aggression zu verhindern.
Es gibt noch Raum für weitere Optimierungen der Strategie:
Verwenden Sie mehrere gleitende Durchschnittswerte für Zeiträume zur Überprüfung, um überempfindliche Kurven zu vermeiden.
Einbeziehung anderer Indikatoren wie MACD zur Beurteilung von Trends und Divergenzen.
Einführung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.
Insgesamt ist die gleitende durchschnittliche Regressionsdurchbruchstrategie eine sehr praktische quantitative Handelsstrategie. Sie hat die Vorteile, Trends zu verfolgen und Drawdowns zu steuern, eine einfache Implementierung und erfüllt die Bedürfnisse des quantitativen Handels. Gleichzeitig sollte auch auf Fragen wie Parameterwahl und Stop-Loss-Einstellungen geachtet werden. Mit Multi-Time-Axis-Analyse und Parameteroptimierung kann eine bessere Strategieleistung erzielt werden.
/*backtest start: 2023-02-16 00:00:00 end: 2024-02-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true) // Input for the number of standard deviations deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier") // Input for the length of the moving average maLength = input.int(50, title="Moving Average Length") // Input for the stop loss percentage stopLossPercentage = input.float(12, title="Stop Loss Percentage") // Calculate the moving average sma = ta.sma(close, maLength) // Calculate the standard deviation of the price priceDeviation = ta.stdev(close, maLength) // Calculate the upper and lower bands upperBand = sma + (priceDeviation * deviationMultiplier) lowerBand = sma - (priceDeviation * deviationMultiplier) // Plot the bands plot(upperBand, color=color.green, title="Upper Band") plot(lowerBand, color=color.red, title="Lower Band") // Plot the moving average plot(sma, color=color.blue, title="SMA", linewidth=2) // Buy Signal buyCondition = ta.crossover(close, lowerBand) sellCondition = ta.crossunder(close, upperBand) // Calculate stop loss level stopLossLevelBuy = close * (1 - stopLossPercentage / 100) stopLossLevelSell = close * (1 + stopLossPercentage / 100) // Create Buy and Sell Alerts alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band") alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band") // Plot Buy and Sell Arrows on the chart plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow") plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow") // Exit Long and Short Positions var float stopLossBuy = na var float stopLossSell = na if ta.crossover(close, sma) stopLossBuy := stopLossLevelBuy if ta.crossunder(close, sma) stopLossSell := stopLossLevelSell strategy.entry("Buy", strategy.long, when = buyCondition) strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy) strategy.entry("Sell", strategy.short, when = sellCondition) strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)