Quantitative Handelsstrategie, die EMA und Supertrend kombiniert

EMA
Erstellungsdatum: 2024-06-17 16:52:17 zuletzt geändert: 2024-06-17 16:52:17
Kopie: 1 Klicks: 773
1
konzentrieren Sie sich auf
1617
Anhänger

Quantitative Handelsstrategie, die EMA und Supertrend kombiniert

Überblick

Die Strategie kombiniert den Index-Moving Average (EMA) und den Supertrend-Indikator (Supertrend) zur Erzeugung von Kauf- und Verkaufssignalen. Ein Kaufsignal wird erzeugt, wenn der Preis die 20-Tage-EMA von oben durchbricht und der Supertrend-Indikator in einem bullish Trend ist. Ein Verkaufssignal wird erzeugt, wenn der Preis die 20-Tage-EMA von unten durchbricht und der Supertrend-Indikator in einem bullish Trend ist.

Strategieprinzip

  1. Berechnen Sie die 20-Tage-EMA als Filterbedingungen für Trends.
  2. Berechnung des Supertrend-Indikators, der auf der Grundlage der mittleren realen Bandbreite (ATR) und der Mehrraum-Trends auf und ab trainiert.
  3. Die Trendrichtung des Supertrend-Indikators und die relative Position des Preises gegenüber der 20. EMA erzeugen ein Kauf- und Verkaufssignal:
    • Ein Kaufsignal wird erzeugt, wenn der Preis die 20-Tage-EMA von oben durchbricht und der Supertrend-Indikator in einem bullish-Trend ist.
    • Ein Verkaufssignal wird erzeugt, wenn der Preis von unten unter die 20-Tage-EMA fällt und der Supertrend-Indikator in einem Abwärtstrend ist.
  4. Die Strategie besteht darin, nach dem Kaufsignal zu erhöhen und nach dem Verkaufsignal zu reduzieren.

Strategische Vorteile

  1. In Kombination mit einer EMA und einem Supertrend-Indikator kann eine Trendbewegung effektiv erfasst und Falschsignale reduziert werden.
  2. Der Supertrend-Indikator basiert auf dem ATR und ist in der Lage, den Auf- und Abstand dynamisch anzupassen, um sich den unterschiedlichen Marktschwankungen anzupassen.
  3. Die EMA dient als Filter für Trends, um sicherzustellen, dass Positionen in der Richtung des Trends eröffnet werden, was die Gewinnrate der Strategie erhöht.
  4. Die Logik der Strategie ist einfach, leicht zu verstehen und umzusetzen.

Strategisches Risiko

  1. Die Strategie kann in einem unruhigen Markt häufige Kauf- und Verkaufssignale erzeugen, was zu einer übermäßigen Anzahl von Transaktionen und Verlusten bei den Gebühren führt.
  2. Die Strategie beruht auf EMAs und Supertrend-Indikatoren, die unter bestimmten Marktbedingungen ausfallen oder zurückbleiben können.
  3. Die Strategie berücksichtigt kein Risikomanagement wie Stop-Loss- und Positionsmanagement, was zu einem größeren Rückzug bei starken Marktschwankungen führen kann.

Richtung der Strategieoptimierung

  1. Einschließung von Stop-Loss-Mechanismen, wie beispielsweise dynamische Stop-Loss-Einstellungen gemäß ATR, um den maximalen Verlust für einen einzelnen Handel zu kontrollieren.
  2. Optimierung von EMAs und Parametern von Supertrend-Indikatoren, wie z. B. die Optimierung von Parametern, um die optimale Kombination von Parametern zu finden und die Anpassungsfähigkeit und Stabilität der Strategie zu verbessern.
  3. Einführung von Positionsmanagement, bei dem die Positionsgröße dynamisch angepasst wird, um das Gesamtrisiko zu kontrollieren, je nach Marktvolatilität oder Kontoverlust.
  4. Erwägen Sie, weitere Filterbedingungen wie Volumen, Volatilität usw. hinzuzufügen, um Falschsignale weiter zu reduzieren.

Zusammenfassen

Die Strategie erzeugt ein Kauf- und Verkaufssignal durch die Kombination von 20-Tage-EMA und Supertrend-Indikatoren, um tendenzielle Verhaltensweisen zu erfassen. Der Vorteil der Strategie liegt in der einfachen Logik, die Kombination von EMA und Supertrend-Indikatoren kann falsche Signale wirksam reduzieren. In einem wackligen Markt kann die Strategie jedoch häufig gehandelt werden und es fehlen Risikomanagementmaßnahmen.

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

//@version=5
strategy("20 EMA and Supertrend Strategy", overlay=true)

// Inputs
emaLength = input(20, title="EMA Length")
supertrendMultiplier = input.float(3.0, title="Supertrend Multiplier")
supertrendPeriod = input(10, title="Supertrend Period")

// EMA Calculation
ema = ta.ema(close, emaLength)

// Supertrend Calculation
Periods = supertrendPeriod
src = hl2
Multiplier = supertrendMultiplier
changeATR= input.bool(true, title="Change ATR Calculation Method?")
showsignals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - (Multiplier * atr)
up1 = na(up[1]) ? up : up[1]
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (Multiplier * atr)
dn1 = na(dn[1]) ? dn : dn[1]
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := na(trend[1]) ? trend : trend[1]
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(series=buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(series=buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.white)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(series=sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(series=sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.white)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.new(color.white, 0)) : color.new(color.white, 0)
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")

// Buy and Sell Signals based on EMA and Supertrend
buySignalEMA = ta.crossover(close, ema) and trend == 1
sellSignalEMA = ta.crossunder(close, ema) and trend == -1

// Plot EMA
plot(ema, color=color.blue, title="20 EMA")

// Plot Buy and Sell Signals
plotshape(series=buySignalEMA, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignalEMA, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Strategy Entries and Exits
if (buySignalEMA)
    strategy.entry("Buy", strategy.long)

if (sellSignalEMA)
    strategy.close("Buy")