Strategie für den Ausbruch von doppelten gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-11-27 16:21:45
Tags:

img

Übersicht

Diese Strategie erzeugt LANGE oder SHORT Eintrittssignale, wenn sich der schnelle 30-tägige einfache gleitende Durchschnitt und der langsame 33-tägige einfache gleitende Durchschnitt des Aktienkurses kreuzen.

Strategieprinzip

Der Kern dieser Strategie besteht darin, den schnellen 30-Tage-MA und den langsamen 33-Tage-MA zu berechnen. Die schnelle Linie kann schneller auf Preisschwankungen reagieren, während die langsame Linie einen besseren Filtereffekt hat. Wenn die schnelle Linie durch die langsame Linie nach oben bricht, wird ein Kaufsignal generiert. Dies zeigt an, dass der Preis steigen beginnt und die schnelle Linie reagiert hat, während die langsame Linie noch zurückbleibt. Wenn die schnelle Linie durch die langsame Linie nach unten bricht, wird ein Verkaufssignal generiert. Dies zeigt an, dass der Preis sinken beginnt, während die schnelle Linie reagiert hat, aber die langsame Linie noch zurückbleibt.

Durch ein so schnelles und langsames MA-Crossover-Design kann es Handelssignale erzeugen, wenn ein neuer Trend beginnt, und bei entgegengesetzten Signalen ausgeht, um mittelfristige bis langfristige Preistrends effektiv zu erfassen.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Mit einfachen gleitenden Durchschnitten ist es leicht zu verstehen und umzusetzen
  2. Die Kombination aus schneller und langsamer Linie kann schnell auf Preisänderungen reagieren und hat auch einen Filtereffekt
  3. Das goldene Kreuz und das Todeskreuz sind einfach und klar, leicht zu bedienen.
  4. Kann mittelfristige und langfristige Trends effektiv erfassen
  5. Schnell bei entgegengesetzten Signalen aussteigen, um Risiken zu kontrollieren

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Es kann mehrere falsche Signale erzeugen, wenn der Preis im Bereich liegt, was zu einem Überhandel führt
  2. Kann mit extremen Preisschwankungen aufgrund unerwarteter Ereignisse nicht sehr gut umgehen
  3. Parameter wie MA-Perioden müssen möglicherweise optimiert werden, unsachgemäße Einstellungen beeinflussen die Strategieleistung
  4. Die Handelskosten wirken sich bis zu einem gewissen Grad auf die Rentabilität aus

Methoden wie Parameteroptimierung, Einstellung des Stop-Loss-Niveaus, Handel nur, wenn der Trend klar ist usw. können verwendet werden, um diese Risiken zu kontrollieren und zu reduzieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimieren von MA-Perioden und Crossover-Typen, um die optimale Parameterkombination zu finden
  2. Hinzufügen anderer Filter für technische Indikatoren, z. B. Handelsvolumen, MACD usw., um falsche Signale zu reduzieren
  3. Hinzufügen von adaptivem Stop-Loss-Mechanismus anstelle von einfach entgegengesetztem Signal-Stop-Loss
  4. Konstruktionsparametermengen und Stop-Loss-Regeln für verschiedene Produkte
  5. Einbeziehung von Methoden des maschinellen Lernens zur dynamischen Anpassung von Parametern

Durch Tests und Optimierungen können die Strategieregeln kontinuierlich verbessert werden, um zuverlässigere Handelssignale in verschiedenen Marktumgebungen zu erhalten.

Zusammenfassung

Zusammenfassend ist diese doppelte MA-Crossover-Breakout-Strategie ziemlich einfach und praktisch. Durch die Kombination von schnellen MA und langsamen MA kann sie den Beginn mittelfristiger bis langfristiger Trends effektiv identifizieren und relativ zuverlässige Handelssignale generieren. Außerdem ist ihre Stop-Loss-Regel einfach zu implementieren. Mit weiterer Optimierung kann diese Strategie zu einem lohnenden langfristigen quantitativen System werden.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//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=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.




testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)


testPeriod() =>
    //true
    time >= testPeriodStart and time <= testPeriodEnd ? true : false

fast_length = 30
slow_length = 33

ema1 = 0.0
ema2 = 0.0

volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)

//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 :=  ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 :=  ema(close,slow_length)



plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)

go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)

if testPeriod()
    strategy.entry("long_ride", strategy.long, when=go_long)
    strategy.entry("short_ride", strategy.short,when=go_short)
    
        
    strategy.close("long_ride",when=go_short)
    strategy.close("short_ride",when=go_long)
    

Mehr