Doppelte EMA Golden Cross und Death Cross Trendfolgestrategie


Erstellungsdatum: 2024-02-29 11:45:42 zuletzt geändert: 2024-02-29 11:45:42
Kopie: 0 Klicks: 644
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelte EMA Golden Cross und Death Cross Trendfolgestrategie

Überblick

Die Double EMA Gold-Fork-Dead-Fork-Trend-Tracking-Strategie ist eine quantitative Handelsstrategie, die die Richtung der Kursentwicklung anhand der beiden EMA-Indikatoren ermittelt. Die Strategie ermittelt die Kursentwicklung durch die Berechnung von EMA-Indikatoren mit zwei verschiedenen Parametern, kombiniert mit Gold-Fork- und Dead-Fork-Signalen.

Strategieprinzip

Die Kernindikatoren der Strategie sind zwei Gruppen von EMAs, darunter eine Gruppe von EMA1 mit längerer Periode und eine Gruppe von EMA2 mit kürzerer Periode. Die Strategie berechnet die beiden Gruppen von EMAs anhand einer 4-Stunden-Linie mit einer Basisperiode von 21 und 10 EMA1-Parametern.

Wenn die kürzere Periode EMA2 die längere Periode EMA1 durchbricht, wird ein Kaufsignal erzeugt. Dies bedeutet, dass die kurzfristige Tendenz der Preise stärker wird und in eine Aufwärtsbewegung eintritt. Wenn die kürzere Periode EMA2 die längere Periode EMA1 durchbricht, wird ein Verkaufssignal erzeugt.

Um Fehlersignale zu filtern, wird eine Strategie mit zwei Forks eingerichtet. Nur wenn zwei Forks gleichzeitig signalisieren, wird ein entsprechender Kauf- oder Verkaufsschritt ausgelöst. Dies reduziert die Anzahl von Fehlhandlungen, die durch Preisschwankungen verursacht werden.

Analyse der Stärken

  • Die Verwendung einer doppelten EMA-Struktur ermöglicht eine effektive Erfassung von Veränderungen in den kurzfristigen Preistrends und ermöglicht eine Trendbeurteilung.
  • Durch das Hinzufügen von Filtern für zwei Sätze von Goldfork-Dead-Fork-Indikatoren können Fehlsignale reduziert und unnötige Geschäfte durch Preisschwankungen vermieden werden.
  • Die Indikatoren werden auf 4-Stunden-Ebene berechnet, um den hochfrequenten Preisschwankungen zu begegnen.
  • Die Strategie ist einfach, klar und leicht zu verstehen und eignet sich für die Anwendung von Quantitative Trading.

Risikoanalyse

  • Die doppelte EMA-Struktur ist schlechter für die Beurteilung der Bilanz. Wenn eine lange Bilanz auftritt, wird ein falsches Signal erzeugt.
  • Der 4-Stunden-Level-Indikator ist nicht empfindlich genug, um auf unerwartete Ereignisse zu reagieren. Wichtige unerwartete Nachrichten können innerhalb von 4 Stunden zu einem erheblichen Anstieg des Handels führen und das Risiko nicht effektiv kontrollieren.
  • Die Strategie basiert nur auf technischen Indikatoren, ohne die grundlegenden Informationen zu kombinieren. Technische Indikatoren können ausfallen, wenn sich die Grundlagen des Unternehmens erheblich ändern.

Diese Risiken können durch folgende Maßnahmen kontrolliert werden:

  1. Erweiterung der EMA-Kennzahlen für mehr Zeiträume und Aufbau eines Modellportfolios.
  2. In Kombination mit Text-Emotion-Analysen und anderen Methoden, um wichtige Ereignisse zu beurteilen und dynamische Positionsanpassungen vorzunehmen.
  3. Veränderungen im wirtschaftlichen Umfeld, in der Politik und in der Unternehmensgrundlage, dynamische Anpassungsparameter.

Optimierungsrichtung

Die Strategie kann noch weiter optimiert werden:

  1. Erhöhung des Modellportfolios. Es können weitere Kombinationen verschiedener Parameterindikatoren erstellt werden, um die Stabilität der Strategie zu verbessern.

  2. Erhöhung der Stop-Loss-Mechanismen. Setzen Sie einen vernünftigen Stop-Loss-Punkt, um einzelne Verluste effektiv zu kontrollieren.

  3. Dynamische Parameteroptimierung. Die Parameter der EMA können automatisch für verschiedene Marktbedingungen optimiert werden.

  4. In Kombination mit maschinellen Lerntechniken. Mit Frameworks wie Tensorflow werden Modelle trainiert, um Preistrends in Echtzeit zu prognostizieren und zu klassifizieren.

Zusammenfassen

Die Double EMA Gold Fork Dead Fork Trend Tracking Strategie ist eine einfache und praktische Trend-Trading-Strategie. Sie nutzt die Double EMA-Indikatoren, um kurzfristige Trends in den Preisen zu ermitteln und die Gelegenheit für Richtungshandel zu erfassen. Die Kombination der beiden Gold Fork Dead Fork Filter-Indikatoren reduziert den Fehlerhandel.

Strategiequellcode
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)