Eine Handelsstrategie basierend auf dem gleitenden Durchschnitt-Crossover


Erstellungsdatum: 2024-01-24 14:59:44 zuletzt geändert: 2024-01-24 14:59:44
Kopie: 0 Klicks: 337
1
konzentrieren Sie sich auf
1237
Anhänger

Eine Handelsstrategie basierend auf dem gleitenden Durchschnitt-Crossover

Überblick

Die Moving Average Crossover Trading Strategie ist eine der häufigsten Quantitative Trading-Strategien. Die Strategie erzeugt Handelssignale, indem sie Moving Averages aus verschiedenen Perioden berechnet und entsprechend ihrer Überschneidung erstellt. Konkret handelt es sich um die Berechnung eines Index-Moving Averages aus 4 Perioden, 8 Perioden und 20 Perioden.

Strategieprinzip

Die Kernlogik der Strategie lautet:

  1. Berechnen Sie EMA-Linien mit 4, 8 und 20 Zyklen.
  2. Beurteilen Sie die Beziehung zwischen der 4-Zyklus-EMA-Linie und der 8-Zyklus-EMA-Linie:
    1. Wenn die 4-Zyklus-EMA-Linie die 8-Zyklus-EMA-Linie überschreitet, zeigt dies, dass die Kursbewegung stärker wird und gehört zu den Mehrkopfsignalen.
    2. Wenn die 4-Zyklus-EMA die 8-Zyklus-EMA überschreitet, bedeutet dies, dass die Kursentwicklung schwächer ist und gehört zu den Hohlkopfsignalen.
  3. Die Richtung der 20-Perioden-EMA-Linie ist:
    1. Wenn die 20-Zyklus-EMA-Linie steigt, wird Enter Long ≠
    2. Wenn die 20-Zyklus-EMA-Linie abfällt, wird Enter Short verwendet.
  4. Wenn die Beziehung zwischen einer 4-Zyklus-EMA-Linie und einer 8-Zyklus-EMA-Linie umgekehrt wird, wird “Prepare Exit” angeben.
  5. Exit Now, wenn sich die 20-Zyklus-EMA-Linie umkehrt.

Mit dieser Methode nutzen wir die Kreuzung zwischen verschiedenen periodischen Durchschnittslinien, um die Marktsignale zu beurteilen, und die Richtung der längsten periodischen Durchschnittslinie, um Fehlsignale zu filtern und eine stabile Handelsstrategie aufzubauen.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Die Strategie ist klar und einfach zu verstehen und umzusetzen.
  2. Durch die Verwendung von Doppel-Bedingungs-Filterungen können Fehlsignale reduziert werden.
  3. Die Erhöhung der 20-Zyklus-EMA ermöglicht die Identifizierung großer Trends und erhöht die Stabilität.
  4. Anpassbare Parameter, um die Handelsfrequenz anzupassen.
  5. Es kann leicht mit anderen Indikatoren oder Modellen kombiniert werden, um eine komplexe Strategie zu erstellen.

Strategisches Risiko

Die Strategie birgt auch einige Risiken:

  1. Die Strategie der doppelten Mittellinien kann leicht zu falschen Signalen führen.
  2. Die festen Zyklen können sich nicht an Veränderungen anpassen.
  3. Das ist eine schwierige Situation, wenn die Börse in Schwierigkeiten ist.

Die wichtigsten Lösungen sind:

  1. Die Haltungsdauer sollte angemessen verkürzt und die Verluste rechtzeitig eingestellt werden.
  2. Dynamische Optimierungsparameter, Anpassung der Mittellinie-Periode.
  3. In Kombination mit anderen Indikatoren oder Modellen erstellen Sie eine kombinierte Strategie.

Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Zyklusoptimierung: Bestimmung der optimalen MA-Zykluskombination für verschiedene Sorten

    1. Stop-Loss-Optimierung: Setzen Sie einen vernünftigen Stop-Loss-Punkt, um einzelne Verluste zu kontrollieren
    2. Parameteroptimierung: Dynamische Optimierung von Parametern mit genetischen Algorithmen, Markov-Ketten usw.
  2. Modellintegration: Integration mit Deep-Learning-Modellen wie LSTM, RNN und anderen, um mehr Alpha zu gewinnen

  3. Kombinationsoptimierung: Kombination mit anderen Kennzahlen, um eine Kombination zu erstellen

Zusammenfassen

Die Moving Average-Cross-Strategie ist insgesamt eine eher klassische und gebräuchliche Quantifizierungs-Trading-Strategie. Die Strategie ist logisch einfach, leicht zu verstehen und umzusetzen und hat eine gewisse Stabilität. Es gibt jedoch auch einige Probleme, wie die Erzeugung von Falschsignalen, die Unfähigkeit, sich an Marktveränderungen anzupassen, etc. Diese Probleme können durch Parameteroptimierung, Stop-Loss-Optimierung, Modellfusion und andere Methoden verbessert werden.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)