Strategie für den Ausbruch der dreifachen EMA-Überschreitungen

Schriftsteller:ChaoZhang, Datum: 2023-12-28
Tags:

img

Übersicht

Die Triple EMA Crossover Breakout-Strategie verwendet dreifache exponentielle gleitende Durchschnittsindikatoren (EMA), um die Markttrendrichtung zu bestimmen und an Trendbreakout-Punkten einzutreten.

Strategie Logik

Die Strategie beruht hauptsächlich auf folgenden Grundsätzen:

  1. Verwenden Sie drei EMA mit unterschiedlichen Perioden (200 Tage, 50 Tage, 20 Tage), um die wichtigsten, mittelfristigen und kurzfristigen Markttrends zu ermitteln.

  2. Wenn die kurzfristige EMA (20 Tage) über die mittelfristige EMA (50 Tage) geht, wird ein Kaufsignal generiert.

  3. Nur wenn der Schlusskurs der zweiten Kerze höher (niedriger) ist als der des vorherigen Kerzes, gilt der Ausbruch als zuverlässig.

  4. Stellen Sie Stop-Loss- und Gewinnniveaus fest, um Risiken über angemessene Kursschwankungen hinaus zu begrenzen.

Analyse der Vorteile

  1. Die Verwendung mehrerer EMAs verbessert die Trendbeurteilung.

  2. Das Filtern falscher Signale mit Kerzenmustern vermeidet unnötige Handelsrisiken.

  3. Stop-Loss und Take-Profit-Kontrollen für Einzelhandelsverluste wirksam.

Risikoanalyse

  1. Auf unterschiedlichen Märkten können die EMAs übermäßige falsche Signale erzeugen und die Marktrichtung nicht bestimmen.

  2. Das einheitliche Indikatorsystem hat in komplexen Marktsituationen eine begrenzte Kapazität.

  3. Sie ignoriert die Handelskosten, die auf Märkten mit hohen Gebühren zu Rentabilität führen könnten.

Optimierung

  1. Einführung anderer Indikatoren wie MACD und KDJ, um ein kombiniertes System zu bilden und die Richtigkeit des Urteils zu verbessern.

  2. Optimieren von Parametern durch Backtesting für spezifische Symbole und Zeitrahmen, um die Strategie besser anzupassen.

  3. Erhöhen Sie das Handelsvolumen, um falsche Signale mit geringem Volumen zu vermeiden.

Schlussfolgerung

Die Triple EMA Crossover Breakout Strategie verfügt über eine klare, leicht verständliche Logik, um Markttrends zu bestimmen und Eingangszeiten mit EMA-Crossovers zu finden.


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

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)
   


Mehr