Strategie für den Durchbruch der Durchschnittslinie

Schriftsteller:ChaoZhang, Datum: 2024-02-23 14:46:37
Tags:

img

Übersicht

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.

Strategieprinzip

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 Standard-Abweichungskanal konstruiert. Wenn der Preis über die obere Schiene geht, gehen Sie kurz; wenn der Preis unter die untere Schiene fällt, gehen Sie lang.

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).

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Durch die Verwendung von Standardabweichungskanälen können Marktfluktuationen dynamisch verfolgt werden.

  2. Durch die Verwendung mobiler Stoppverluste können einzelne Verluste wirksam kontrolliert werden.

  3. Einfache Implementierung. Spart eine Menge Parameteroptimierung und ist sehr einfach zu implementieren.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Trend-Tracking-Strategien sind anfällig für Verluste und dann Umkehrungen.

  2. Parameterempfindlichkeitsrisiko: Die Wahl von Parametern wie beispielsweise gleitender Durchschnittsperiode und Standardabweichungsmultiplikator hat einen größeren Einfluss auf die Strategieergebnisse.

  3. Eine falsche Einstellung des Stop-Loss-Punkts kann zusätzliche Verluste verursachen.

Die Lösungen für die entsprechenden Risiken sind wie folgt:

  1. Kombination von Volatilitätsindikatoren, um falsche Ausbrüche zu vermeiden.

  2. Parameter optimieren, um die optimale Parameterkombination zu finden.

  3. Der Stop-Loss-Mechanismus wird angepasst, um eine übermäßige Aggression zu verhindern.

Optimierungsrichtlinien

Es gibt noch Raum für weitere Optimierungen der Strategie:

  1. Verwenden Sie mehrere gleitende Durchschnittswerte für Zeiträume zur Überprüfung, um überempfindliche Kurven zu vermeiden.

  2. Einbeziehung anderer Indikatoren wie MACD zur Beurteilung von Trends und Divergenzen.

  3. Einführung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.

Zusammenfassung

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)


Mehr