Trend nach einer auf gleitenden Durchschnitten basierenden Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-18 12: 23:59
Tags:

img

Übersicht

Diese Strategie ist eine Trend-Folge-Strategie, die auf gleitenden Durchschnitten basiert. Sie nutzt EMA-Linien verschiedener Perioden, um mehrere Sätze von Handelssignalen für die Trendverfolgung zu konstruieren. Wenn der Preis unter den längeren gleitenden Durchschnitten bricht, wird die Strategie schrittweise lange Positionen aufbauen, um die durchschnittlichen Kosten zu senken. Die Strategie setzt auch Stop-Loss-Bedingungen auf der Grundlage von kurzen gleitenden Durchschnittsdrehungen, um Gewinne zu sichern.

Strategie Logik

Die Strategie verwendet 5 EMA-Linien unterschiedlicher Perioden für den Aufbau von Handelssignalen, die 10-Tage-, 20-Tage-, 50-Tage-, 100-Tage- und 200-Tage-EMA sind.

Wenn der Preis unter der 20-tägigen EMA liegt, während er über der 50-tägigen EMA liegt, wird das erste Kaufsignal ausgelöst. Wenn er unter der 50-tägigen EMA liegt, während er über der 100-tägigen EMA liegt, wird das zweite Kaufsignal ausgelöst. Die dritten und vierten Kaufsignale werden ausgelöst, wenn der Preis unter die 100-tägige EMA bzw. die 200-tägige EMA fällt. Die Positionsgröße erweitert sich auch progressiv von qt1 auf qt4.

Auf der Verkaufsseite gibt es zwei Gruppen von Stop-Loss-Bedingungen. Die erste ist der Stop-Loss, wenn der Preis die 10-tägige EMA übersteigt, während die 10-tägige EMA über anderen EMA-Linien liegt. Die zweite ist ähnlich, aber sie geht aus, wenn der Preis unter den vorherigen Schlusskurs der 10-tägigen EMA fällt. Diese beiden Bedingungen dienen dazu, kurzfristige Gewinne während der Trends zu sichern.

Analyse der Vorteile

Der größte Vorteil dieser Strategie ist die Fähigkeit, Markttrends für langfristige Halte automatisch zu verfolgen. Durch die Nutzung mehrerer Einstiegsbedingungen und progressiver Positionsbildung reduziert sie ständig die Kostenbasis, um überschüssige Renditen zu erzielen. Sie diversifiziert auch das mit einem einzigen Einstiegspreisniveau verbundene Preisrisiko.

Auf der Stop-Loss-Seite verfolgt die Strategie kurzfristige gleitende Durchschnittswendepunkte, um schnell Gewinn zu erzielen und weitere Verluste zu vermeiden.

Risikoanalyse

Das größte Risiko, dem diese Strategie gegenübersteht, besteht darin, in langfristigen Konsolidierungen oder Abwärtstrends stecken zu bleiben. Wenn der Gesamtmarkt in einen Bereich oder einen Abwärtstrend eintritt, werden gleitende Durchschnittssignale weniger zuverlässig. Dies könnte zu anhaltenden Verlusten durch fortgesetzte lange Builds führen.

Ein weiterer Risiko ist, dass gleitende Durchschnitte nicht immer genau die Wende bestimmen. Preislücken oder explosive Bewegungen können zu fehlerhaften Signalen führen. Dies erfordert zusätzliche technische Indikatoren zur Überprüfung und Optimierung.

Optimierungsrichtlinien

Andere technische Indikatoren wie Volumen oder Bollinger-Bänder könnten in die Kaufbedingungen aufgenommen werden, um die Eingangsgenauigkeit weiter zu verbessern.

Die zweite Schicht von Stop-Loss auf der Grundlage von Bollinger Upper Band oder wichtigen Unterstützungsbereichen könnte ebenfalls hinzugefügt werden. Dies hilft, unnötige kleine Stops zu vermeiden.

Schlussfolgerung

Diese Strategie implementiert den Trend nach dem Handel über ein gleitendes Durchschnittssystem. Durch den Aufbau einer Pyramidenposition zielt sie darauf ab, die Renditen aus nachhaltigen Trends zu maximieren und gleichzeitig die Kapitalerhaltung mit doppelten Stop-Loss-Mechanismen zu sichern. Dies ist eine Strategie, die es wert ist, weiter verfolgt und live getestet zu werden. Parameter und Modelle können nach und nach auf der Grundlage der praktischen Leistung optimiert werden.


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

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Mehr