Die gleitende Durchschnittsverfolgungsstrategie ist eine auf einfachen gleitenden Durchschnitten basierende Trendfolgestrategie. Sie verwendet einen 200-tägigen einfachen gleitenden Durchschnitt, um die Kurstrendrichtung zu bestimmen. Wenn der Preis über den gleitenden Durchschnitt überschreitet, geht er lang. Wenn der Preis unter den gleitenden Durchschnitt überschreitet, geht er kurz. Diese Strategie verfolgt den Trend zum Gewinn.
Die Strategie beruht auf folgenden Grundsätzen:
Die Strategie verfolgt den Trend, indem sie die durchschnittliche Richtung bewegt und umgekehrte Trades durchführt, wenn der MA-Crossover stattfindet, um von dem Trend zu profitieren.
Die Strategie weist folgende Vorteile auf:
Es gibt auch einige Risiken:
Die Risiken können durch folgende Optimierungen bekämpft werden:
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Optimieren Sie den MA-Periodenparameter mit Methoden wie Walk Forward Analysis, um die optimalen Parameter zu finden.
Hinzufügen eines kurzfristigen MA, um sowohl langfristige als auch kurzfristige Trends zu verfolgen.
Einbeziehung von Trendindikatoren wie MACD zur besseren Identifizierung von Trendumkehrungen.
Fügen Sie Stop-Loss-Mechanismen wie Trailing Stop-Loss hinzu, um Einzelhandelsverluste zu kontrollieren.
Robustheitstest auf verschiedenen Produkten und Zeiträumen.
Verwenden Sie maschinelles Lernen für die parameteradaptive Optimierung.
Die gleitende Durchschnitts-Tracking-Strategie ist eine einfache und praktische Trend-Folge-Strategie. Sie hat eine klare Logik und ist einfach zu implementieren, um Trends zu erfassen. Aber sie hat auch einige Schwächen wie unempfindlich gegenüber kurzfristigen Korrekturen und schwache Risikokontrolle. Wir können die Strategie aus mehreren Aspekten optimieren, um sie robuster, besser parametriert und mit stärkerem Risikomanagement zu machen. Insgesamt hat die gleitende Durchschnitts-Tracking-Strategie einen guten Anwendungswert und ist ein wichtiges Trendhandelskonzept im quantitativen Handel.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// MA 200 ///////////// slowMA = sma(close, input(200)) /////////////// Strategy /////////////// long = close > slowMA short = close < slowMA last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) /////////////// Execution /////////////// if testPeriod() strategy.entry("Long Entry", strategy.long, when=long_signal) strategy.entry("Short Entry", strategy.short, when=short_signal) strategy.exit("Long Ex", "Long Entry") strategy.exit("Short Ex", "Short Entry") /////////////// Plotting /////////////// plot(slowMA, color = long ? color.lime : color.red, linewidth=2) bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)