Marktübergreifende Trendverfolgungsstrategie basierend auf dem gleitenden Durchschnitt der EMA und dem bidirektionalen dynamischen Stop-Loss


Erstellungsdatum: 2024-01-29 09:57:20 zuletzt geändert: 2024-01-29 09:57:20
Kopie: 0 Klicks: 587
1
konzentrieren Sie sich auf
1617
Anhänger

Marktübergreifende Trendverfolgungsstrategie basierend auf dem gleitenden Durchschnitt der EMA und dem bidirektionalen dynamischen Stop-Loss

Überblick

Die Strategie basiert auf dem EMA-Durchschnitt und setzt eine dynamische Stop-Loss-Linie, um Trends zu erfassen.

Strategieprinzip

  1. Berechnen Sie die schnelle EMA-Linie ((5 Tage) und die langsame EMA-Linie ((20 Tage)
  2. Wenn die schnelle Linie die langsame Linie von unten durchquert, mehr tun; wenn die schnelle Linie die langsame Linie von oben durchquert, machen Sie Platz
  3. Wenn Sie mehr machen, setzen Sie eine dynamische Stop-Loss-Linie als Einstiegspreis.(1-Prozentsatz der langen Stop-Loss-Position); nach dem Short-Term setzt man eine dynamische Stop-Loss-Linie als Einstiegspreis(1 + Prozent der kurzfristigen Stop-Loss-Position)
  4. Wenn der Preis die entsprechende Stop-Line auslöst, wird ein Stop-Out durchgeführt.

Analyse der Stärken

  1. Die EMA-Durchschnittswerte haben eine starke Trendverfolgungsfähigkeit, bi-directional Crossing Formation Timer, kann Trendemöglichkeiten effektiv sperren
  2. Dynamische Berechnung von Stop-Loss-Linien, die nach Erreichen eines Gewinns in den Markt kommen, um Trendgewinne maximal zu lockern
  3. Die Verwendung von VWP als zusätzliche Filterbedingung verhindert das Einschalten und verbessert die Signalqualität

Risikoanalyse

  1. “Wir sind der Meinung, dass es sich um eine reine Trendstrategie handelt, die leicht in Schwankungen verwickelt werden kann”.
  2. Die Verluste könnten durch eine zu lockere Stop-Loss-Regelung vergrößert werden
  3. Die Verzögerung des EMA-Generationssignals könnte die optimale Marktposition verpassen

Die Optimierung kann durch Risikomanagement mit ATR, Optimierung von kurzfristigen Stop-Loss-Strategien oder in Kombination mit anderen Indikatoren wie Filter-Noise-Trading erfolgen.

Optimierungsrichtung

  1. In Kombination mit dynamischen Stop-Loss-Indikatoren wie ATR oder DONCH wird eine Stop-Line festgelegt, die besser auf den Markt zugeschnitten ist
  2. Hinzufügen von Filtersignalen für andere technische Kennzahlen wie MACD, KDJ usw. zur Verringerung von Fehlinteressen
  3. Optimierung der Parameter zur Suche nach der optimalen Kombination aus schnellen und mittleren Längen
  4. Es gibt eine Reihe von Methoden, mit denen wir versuchen können, die optimale Parameter zu finden.

Zusammenfassen

Diese Strategie ist insgesamt eine sehr typische Trend-Tracking-Strategie. Die Doppel-EMA-Form ist ein Gold-Stop-Fork, ein dynamischer Stop-Loss, der effektiv Trend-Gewinn locken kann. Es besteht jedoch ein gewisses Rückstandsrisiko und das Risiko, dass der Stop-Loss zu breit wird.

Strategiequellcode
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("EMA Crossover Strategy", shorttitle="EMAC", overlay=true,calc_on_every_tick=true)

// Input parameters
shortEmaLength = input(5, title="Short EMA Length")
longEmaLength = input(20, title="Long EMA Length")
priceEmaLength = input(1, title="Price EMA Length")

// Set stop loss level with input options (optional)
longLossPerc = input.float(0.05, title="Long Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

shortLossPerc = input.float(0.05, title="Short Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

// Calculating indicators
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
//priceEma = ta.ema(close, priceEmaLength)
vwap = ta.vwap(close)

// Long entry conditions
longCondition = ta.crossover(shortEma, longEma) and close > vwap
// Short entry conditions
shortCondition = ta.crossunder(shortEma, longEma) and close > vwap

// STEP 2:
// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


if (longCondition)
    strategy.entry("Enter Long", strategy.long)
    strategy.exit("Exit Long",from_entry = "Enter Long",stop= longStopPrice)
plotshape(series=longCondition, title="Long Signal", color=color.green, style=shape.triangleup, location=location.belowbar)


if (shortCondition)
    strategy.entry("Enter Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Enter Short",stop = shortStopPrice)
plotshape(series=shortCondition, title="Short Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Stop loss levels
//longStopLoss = (1 - stopLossPercent) * close
//shortStopLoss = (1 + stopLossPercent) * close

// Exit conditions
//strategy.exit("Long", from_entry="Long", loss=longStopLoss)
//strategy.exit("Short", from_entry="Short", loss=shortStopLoss)

// Plotting indicators on the chart
plot(shortEma, color=color.yellow, title="Short EMA")
plot(longEma, color=color.green, title="Long EMA")
plot(close, color=color.black, title="Close")
plot(vwap, color=color.purple, title="VWAP")

// Plot stop loss values for confirmation
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_line,
     linewidth=2, title="Long Stop Loss")

plot(strategy.position_size < 0 ? shortStopPrice : na,
     color=color.blue, style=plot.style_line,
     linewidth=2, title="Short Stop Loss")
// Plotting stop loss lines
//plot(longStopLoss, color=color.red, title="Long Stop Loss", linewidth=2, style=plot.style_line)
//plot(shortStopLoss, color=color.aqua, title="Short Stop Loss", linewidth=2, style=plot.style_line)