Aufwärtstrendstrategie mit mehreren EMA

Schriftsteller:ChaoZhang, Datum: 2024-01-22 12:04:05
Tags:

img

Übersicht

Die Multi-EMA Bullish Trend Strategie ist eine Trend-Folge-Strategie, die auf mehreren exponentiellen gleitenden Durchschnitten (EMA) verschiedener Perioden zur Trendbestimmung basiert.

Strategie Logik

Die Strategie verwendet 6 EMAs mit Perioden von 10, 20, 50, 100, 150 und 200 Tagen. Diese EMAs werden verwendet, um das aktuelle zyklische Stadium des Marktes zu bestimmen. Wenn kürzere EMAs (z. B. 10-tägige) über längere EMAs (z. B. 20--, 50-tägige) kreuzen, signalisiert dies, dass der Markt in die Markup-Phase eines Bulltrends eingetreten ist.

Insbesondere wird die Strategie langlebig sein, wenn folgende Bedingungen erfüllt sind:

  1. Der 10-Tage-EMA ist höher als der 20-Tage-EMA
  2. 20-Tage-EMA ist höher als 50-Tage-EMA
  3. Der 100-Tage-EMA ist höher als der 150-Tage-EMA
  4. Der 150-Tage-EMA ist höher als der 200-Tage-EMA
  5. Schlusskurs überschreitet 10-Tage-EMA

Nach der Eröffnung einer Long-Position wird ein 8%iger Stop-Loss verwendet, um Gewinne zu erzielen. Das bedeutet, dass die Position so lange offen gehalten wird, bis der Preis nicht mehr als 8% vom Einstiegspreis fällt. Sobald der Drawdown 8% übersteigt, wird die Position geschlossen, um einen Stop-Loss zu erzielen.

Zusammenfassend ist die Schlüsselidee dieser Strategie, wenn durch mehrfache EMA-Ausrichtung bestätigt, in einen Bullentrend einzutreten und den Trailing Stop Loss zu nutzen, um Gewinne zu erzielen.

Analyse der Vorteile

Die Multi-EMA-Bulltrend-Strategie weist folgende Stärken auf:

  1. Es kann falsche Ausbrüche effektiv filtern und sicherstellen, dass die Markup-Zyklen erfasst werden, wodurch unnötige Trades reduziert werden.
  2. Die mehrfachen EMA-Filter verringern die Wahrscheinlichkeit, dass ein Stop-Loss getroffen wird, was eine sicherere Halte von Positionen ermöglicht.
  3. Der 8%-Stop-Loss ist weder zu eng noch zu locker und gleicht Gewinn- und Verlust-Stop-Loss aus.
  4. Die Strategie ermöglicht eine flexible Parameter-Ausrichtung für die Optimierung verschiedener Produkte.

Risikoanalyse

Für diese Strategie sind auch einige Risiken zu beachten:

  1. Die EMA-Sequenz kann für 100% der Fälle keine Trendrichtung garantieren, einige Whipsaws können immer noch auftreten.
  2. Der 8%-Stopp kann bei großen Trends einige Gewinne einbüßen.
  3. Die EMA-Systeme haben eine inhärente Verzögerung, die Bestätigung von Wendepunkten kann leicht verzögert werden.

Um diesen Risiken entgegenzuwirken, können wir diese Optimierung durch Anpassung der EMA-Perioden oder durch die Einbeziehung von Hilfsindikatoren zur Verbesserung des Urteils optimieren.

Optimierungsrichtlinien

Angesichts der Merkmale dieser Strategie können sich zukünftige Optimierungen auf folgende Aspekte konzentrieren:

  1. Versuche verschiedene EMA-Kombinationen und Periodensätze, um optimale Parameter zu finden.
  2. Hinzufügen von Volatilitätsindexindikatoren zur Messung der Trendstärke, um unnötige Einträge zu vermeiden.
  3. Fügen Sie mehr Filterindikatoren wie MACD, KDJ für die Bilanzbestätigung hinzu.
  4. Einsatz von Algorithmen des maschinellen Lernens für die dynamische Implementierung von Stop-Loss.

Schlussfolgerung

Insgesamt ist die Multi-EMA Bull Trend Strategie ein robustes und zuverlässiges Trendfolgensystem, das die Trendbestimmung und Risikokontrolle ausbalanciert. Es gibt immer noch ein großes Verbesserungspotenzial durch Parameter-Tuning und Algorithmusoptimierung. Es ist eine effektive Strategie, die es wert ist, ausprobiert und recherchiert zu werden.


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

//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)
    


Mehr