Multi-Timeframe Moving Average und EMA-basierte Trendstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-21 15:59:43
Tags:

img

Übersicht

Diese Strategie verwendet gleitende Durchschnitte (MA) und EMA über verschiedene Zeitrahmen hinweg, um Trends zu identifizieren und zu handeln.

Strategie Logik

Die Kernidee basiert auf dem Vergleich von 3 SMAs aus verschiedenen Perioden, um die Kursdynamik zu bestimmen.

Insbesondere setzt die Strategie 3 SMAs ein - 3-, 8- und 10-Perioden SMA. Wenn der Preis unter allen 3 SMAs liegt, gilt es als Abwärtstrend.

Außerdem prüft eine 5-Perioden-EMA, ob der Kerzenkörper nach oben zeigt, bevor man lange Trades eingeht.

Für die Ausstiegsregeln wird als Stop-Loss-Mechanismus die maximale Anzahl der profitablen Schließungen oder die maximale Dauer verwendet.

Analyse der Vorteile

Durch die Kombination von MAs verschiedener Zeitrahmen kann diese Strategie effektiv Marktlärm filtern und mittelfristige bis langfristige Trends erfassen.

Die Verwendung von EMA zur Überprüfung der Richtung des Kerzenkörpers reduziert unnötige Schlupfungen durch Kauf in fallende Kerzen.

Insgesamt handelt es sich hierbei um ein stabiles und zuverlässiges System, das sich für den Trend über Wochen bis Monate hinweg eignet.

Risiken und Minderungsmaßnahmen

  • Die Strategie ist parametersensitiv. Eine suboptimale Wahl von 3 SMA- oder 1 EMA-Perioden kann die Signalqualität verschlechtern. Parameter müssen für verschiedene Instrumente optimiert werden.

  • Das Risiko von Gap wird nicht behandelt. Plötzliche grundlegende Nachrichten, dass Gap-Preise Verluste verursachen könnten. Preisstop-Loss kann helfen, solche Risiken zu mildern.

Möglichkeiten zur Verbesserung

  • Um die Trendgenauigkeit weiter zu verbessern, können weitere Zeitrahmen von MAs oder EMA hinzugefügt werden.

  • Moderate Preisstop-Loss können getestet werden, um Gewinne zu erzielen und gleichzeitig Verluste bei extremen Bewegungen zu reduzieren.

  • Maschinelles Lernen kann Parameter dynamisch optimieren, um sich an sich ändernde Marktbedingungen anzupassen.

Schlussfolgerung

Die Strategie ist insgesamt robust und zuverlässig und verwendet MA-Kreuzungen, um den Trend zu bestimmen, ergänzt durch EMA-Filter.


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

//@version=3
strategy("Free Strategy #02 (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

Mehr