Momentum Moving Average Crossover-Strategie


Erstellungsdatum: 2024-01-23 14:18:26 zuletzt geändert: 2024-01-23 14:18:26
Kopie: 1 Klicks: 537
1
konzentrieren Sie sich auf
1617
Anhänger

Momentum Moving Average Crossover-Strategie

Überblick

Diese Strategie basiert auf der Kreuzung der EMA-Grenzlinie in verschiedenen Perioden, um die Richtung des Trends zu bestimmen, und basiert darauf, um mehr Shorting-Signal zu erstellen. Sie verwendet hauptsächlich 2 Mittellinien, die 10-Tage- und 20-Tage-Linie.

Strategieprinzip

Die Strategie verwendet zwei EMA-Mittellinien, einschließlich der 10- und der 20-Tage-Linie. Die EMA-Mittellinien spiegeln die Trendrichtung der Preise sehr gut wider. Wenn die kurzfristige EMA-Linie von unten nach oben die langfristige EMA-Linie durchquert, ist dies ein Mehrwertsignal. Wenn die kurzfristige EMA-Linie von oben nach unten die langfristige EMA-Linie durchquert, ist dies ein Fehlwertsignal.

Die Strategie kombiniert die Maximal- und Minimalwerte der Schwankungen, um einen Teil des Handelssignals zu filtern. Das Handelssignal wird nur ausgegeben, wenn die Preisschwankungen einen bestimmten Umfang erreicht haben. Dies kann zum Teil falsche Signale filtern.

Die Strategie beurteilt, ob ein Preistrend entsteht, indem sie den Höchst- und Minimalwert des Preises aufzeichnet. Ein echtes Handelssignal wird erst ausgesendet, wenn der Höchst- oder Minimalwert eine bestimmte Zeit erreicht hat.

Strategische Stärkenanalyse

Die Strategie hat folgende Vorteile:

  1. Mit der EMA-Gewinnlinie kann man die Richtung des Trends bestimmen und die Marktentwicklung effektiv verfolgen.
  2. Die EMA-Mittellinie, kombiniert mit verschiedenen Perioden, kann Handelschancen auf der mittleren und kurzen Linie erfassen
  3. Durch die Filterung von Extreme-Signalen kann ein Teil des Geräusches ausgeschaltet werden, um verpasste Handelschancen zu vermeiden.
  4. Strategie-Logik ist einfach, klar und leicht zu verstehen und zu ändern
  5. Anpassungsfähigkeit der Parameter je nach Sorte und Handelspräferenz

Strategische Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Die EMA-Mittellinie selbst ist nachlässig und kann eine kurzfristige Kursumkehr verpassen.
  2. Unvollständige Filterung von Geräuschsignalen, möglicherweise ein gewisser Fehlhandel
  3. Anpassung der Parameter an unterschiedliche Marktumstände

Das Risiko kann durch folgende Maßnahmen verringert werden:

  1. Signalbestätigung in Kombination mit anderen Indikatoren, um EMA-Gewinnspannen zu vermeiden
  2. Optimierung von Filterbedingungen für die Extreme und Verbesserung der Signalzuverlässigkeit
  3. Anpassung der Parameter an die Rückmeldung und Optimierung der Strategie

Richtung der Strategieoptimierung

Die Strategie kann in folgenden Richtungen weiter optimiert werden:

  1. Hinzufügen einer Reihe von anderen technischen Indikatoren, um die Genauigkeit der Handelssignale zu verbessern, z. B. MACD, KD usw.
  2. Optimierung der Parameter der EMA-Gehaltslinie, um sie besser an die spezifischen Sorten anzupassen.
  3. Optimierung der Parameter für maximale und minimale Werte, Verbesserung der Beurteilung von Preisschwankungen.
  4. Es wurde eine Stop-Loss-Strategie hinzugefügt, um den maximalen Verlust eines einzelnen Handels zu kontrollieren.
  5. Verschiedene Sorten wurden mit dieser Strategie getestet, um ihre Eignung zu beurteilen.

Zusammenfassen

Die EMA-Cross-Strategie ist insgesamt eine einfache und praktische Trend-Tracking-Strategie. Sie nutzt die EMA-Gewinnlinie, um die Richtung des großen Trends zu bestimmen, und kombiniert die Preisfluktuations-Filtersignale, um Handelsentscheidungen zu treffen. Die Strategie ist leicht zu verstehen und die Parameter anzupassen, um mittel- und kurzfristige Geschäfte anzupassen.

Strategiequellcode
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)