Strategie zur Verfolgung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-10-20 17:02:52
Tags:

img

Übersicht

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.

Strategie Logik

Die Strategie beruht auf folgenden Grundsätzen:

  1. Verwenden Sie einen einfachen gleitenden 200-Tage-Durchschnitt (slowMA), um die Kursentwicklung zu bestimmen.
  2. Wenn der Schlusskurs (Schließen) über slowMA liegt, signalisiert dies einen Aufwärtstrend.
  3. Wenn der Schlusskurs (Schließen) unter slowMA fällt, signalisiert dies einen Abwärtstrend.
  4. Verwenden Sie die Variablen last_long und last_short, um die letzte lange und kurze Eingabezeit aufzuzeichnen.
  5. Verwenden Sie die Crossover-Funktion, um den Crossover zwischen last_long und last_short zu erkennen, um Handelssignale zu generieren.
  6. In der Backtest-Periode geht man bei Empfang des langen Signals (long_signal) lang und bei Empfang des kurzen Signals (short_signal) kurz.

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.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Strategielogik ist einfach und leicht zu verstehen und umzusetzen.
  2. Der langfristige gleitende Durchschnitt filtert Lärm aus und sperrt den Haupttrend.
  3. Eine rechtzeitige Umkehrverhandlung kann bedeutende Kursschwankungen bei Trendumkehrungen erfassen.
  4. Es wird nur ein Indikator verwendet, wodurch die Komplexität mehrerer Indikatoren vermieden wird.
  5. Klare Ein- und Ausstiegsregeln ohne menschliches Eingreifen.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Die langfristige MA ist nicht anfällig für kurzfristige Korrekturen und verpasst kurzfristige Chancen.
  2. Schwache Fähigkeit zur Identifizierung großer Trendumkehrungen mit Umkehrverlusten.
  3. Kein Stop-Loss-Mechanismus, was zu großen Rückzügen führt.
  4. Feste Parameter haben eine schwache Anpassungsfähigkeit für verschiedene Produkte und Marktumgebungen.
  5. Rücktest-Überanpassungsrisiko, da die Strategie nur auf historischen Daten getestet wird.

Die Risiken können durch folgende Optimierungen bekämpft werden:

  1. Zusätzlich werden kurzfristige MA hinzugefügt, um auch kurzfristige Trends zu erfassen.
  2. Fügen Sie Lautstärkungsfilter hinzu, um falsche Ausbruchssignale zu vermeiden.
  3. Hinzufügen von Trendindikatoren zur besseren Identifizierung von Trendumkehrungen.
  4. Hinzufügen eines dynamischen Stop Loss zur Kontrolle von Einzelverlusten.
  5. Verwenden Sie Parameteroptimierungsmethoden, um die Anpassungsfähigkeit zu verbessern.
  6. Robustheitstest in verschiedenen Marktumgebungen.

Optimierungsrichtlinien

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Optimieren Sie den MA-Periodenparameter mit Methoden wie Walk Forward Analysis, um die optimalen Parameter zu finden.

  2. Hinzufügen eines kurzfristigen MA, um sowohl langfristige als auch kurzfristige Trends zu verfolgen.

  3. Einbeziehung von Trendindikatoren wie MACD zur besseren Identifizierung von Trendumkehrungen.

  4. Fügen Sie Stop-Loss-Mechanismen wie Trailing Stop-Loss hinzu, um Einzelhandelsverluste zu kontrollieren.

  5. Robustheitstest auf verschiedenen Produkten und Zeiträumen.

  6. Verwenden Sie maschinelles Lernen für die parameteradaptive Optimierung.

Schlussfolgerung

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)

Mehr