Dynamische Trendverfolgung - Crossover-Strategie für gleitende Durchschnitte über mehrere Perioden

SMA EMA MA
Erstellungsdatum: 2024-12-13 10:40:30 zuletzt geändert: 2024-12-13 10:40:30
Kopie: 0 Klicks: 475
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische Trendverfolgung - Crossover-Strategie für gleitende Durchschnitte über mehrere Perioden

Überblick

Die Strategie ist ein auf mehrperiodischen Durchschnittslinien basierendes Trend-Tracking-Trading-System. Die Strategie nutzt den 89-Zyklus- und den 21-Zyklus-Simplen Moving Average (SMA) zur Bestimmung der Gesamttrendrichtung des Marktes und sucht nach spezifischen Handelssignalen in Kombination mit den Höhen und Tiefen des 5-Zyklus-Index Moving Average (EMA). Die Strategie verwendet eine doppelte Positionsmanagement-Methode und kombiniert Fixed Stop Loss und Tracking Stop Loss, um das Risiko zu kontrollieren.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:

  1. Trendentscheidung: Die relative Position der 89- und 21-Zyklus-SMA sowie die Preisposition werden verwendet, um einen Trend zu bestimmen. Wenn der Preis und die 5-Zyklus-EMA beide über dem 21-Zyklus-SMA liegen und der 21-Zyklus-SMA über dem 89-Zyklus-SMA liegt, wird als Aufwärtstrend beurteilt; umgekehrt als Abwärtstrend.
  2. Eintrittssignale: Eintritt in den Aufwärtstrend, wenn der Preis auf die 5-Zyklus-EMA-Tiefpunkte zurückgreift; Eintritt in den Abwärtstrend, wenn der Preis auf die 5-Zyklus-EMA-Hochpunkte zurückgreift.
  3. Positionsverwaltung: Bei jedem Signal werden zwei gleiche Kontraktpositionen eröffnet.
  4. Risikokontrolle: Festgelegte Stop-Loss- und Gewinnziele für die erste Position und eine verfolgte Stop-Loss-Verwaltung für die zweite Position.

Strategische Vorteile

  1. Mehrfache Zeitspanne Bestätigung: Durch die Kombination von Moving Averages in verschiedenen Zeitspannen, kann die Markttrends umfassender beurteilt werden, um falsche Signale zu reduzieren.
  2. Flexible Stop-Ops: In Kombination mit Fixed Stop-Ops und Tracking-Stops kann man sowohl bei kurzfristigen Schwankungen profitieren als auch die großen Trends nicht verpassen.
  3. Risikokontrolle: Es werden eindeutige Stop-Loss-Positionen festgelegt, wobei die Risikogrenze für jedes Handelssignal festgelegt ist.
  4. Systematische Handhabung: Die Regeln des Handels sind eindeutig, unabhängig von subjektiven Urteilen und leicht programmatisch umzusetzen.

Strategisches Risiko

  1. Das Risiko von Schwankungen: Häufige Durchschnittskreuzungen können zu einem Übermaß an Falschsignalen führen.
  2. Rutschrisiko: Bei starker Marktschwankung kann der tatsächliche Kaufpreis stark von dem theoretischen Signalpreis abweichen.
  3. Risiken bei der Vermögensverwaltung: Die Möglichkeit, mit einer festen Anzahl von Verträgen zu handeln, ist möglicherweise nicht für alle Vermögensstufen geeignet.
  4. Parameter-Sensitivität: Die Wahl der Moving Average-Periode hat einen großen Einfluss auf die Strategie-Performance und muss für verschiedene Märkte optimiert werden.

Richtung der Strategieoptimierung

  1. Dynamische Positionsverwaltung: Es wird empfohlen, die Anzahl der Handelskontrakte dynamisch an die Nettowertkosten des Kontos und die Marktfluktuation anzupassen.
  2. Marktumfeld-Filter: Steigerung der Trendstärke (z. B. ADX) und Verringerung der Handelsfrequenz in einem wackligen Markt.
  3. Stop-Loss-Optimierung: Eine dynamische Anpassung der Stop-Loss-Distanz mit ATR kann in Betracht gezogen werden, um die Anpassung der Strategie an verschiedene Marktumgebungen zu verbessern.
  4. Signalbestätigung: Erhöhung der Hilfsindikatoren wie Volumen und Dynamik, um die Zuverlässigkeit des Handelssignals zu erhöhen.

Zusammenfassen

Die Strategie ist ein strukturiertes Trend-Tracking-System, das Markttrends durch eine Kombination aus mehrperiodischen Mittelwerten erfasst und Risiken mit flexibler Positionsverwaltung und Stop-Loss-Methoden kontrolliert. Obwohl es einen gewissen Optimierungsraum gibt, bietet das grundlegende Framework der Strategie eine gute Praktikabilität und Erweiterbarkeit. Die Stabilität der Strategie kann durch Anpassung der Parameter und Erhöhung der Filterbedingungen für verschiedene Handelsarten und Marktumgebungen verbessert werden.

Strategiequellcode
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tobiashartemink2

//@version=5
strategy("High 5 Trading Technique", overlay=true)

// --- Input parameters ---
sma89Length = input.int(title="SMA 89 Length", defval=89)
sma21Length = input.int(title="SMA 21 Length", defval=21)
ema5HighLength = input.int(title="EMA 5 High Length", defval=5)
ema5LowLength = input.int(title="EMA 5 Low Length", defval=5)
contracts = input.int(title="Aantal Contracten", defval=1)
stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25)
takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25)

// --- Calculate moving averages ---
sma89 = ta.sma(close, sma89Length)
sma21 = ta.sma(close, sma21Length)
ema5High = ta.ema(high, ema5HighLength)
ema5Low = ta.ema(low, ema5LowLength)

// --- Identify trend and order of moving averages ---
longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89
shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89

// --- Entry signals ---
longTrigger = longSetup and close <= ema5Low
shortTrigger = shortSetup and close >= ema5High

// --- Entry orders ---
if (longTrigger)
    strategy.entry("Long 1", strategy.long, qty=contracts)
    strategy.entry("Long 2", strategy.long, qty=contracts)

if (shortTrigger)
    strategy.entry("Short 1", strategy.short, qty=contracts)
    strategy.entry("Short 2", strategy.short, qty=contracts)

// --- Stop-loss and take-profit for long positions ---
if (strategy.position_size > 0)
    strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints)
    strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Stop-loss and take-profit for short positions ---
if (strategy.position_size < 0)
    strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints)
    strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Plot moving averages ---
plot(sma89, color=color.blue, linewidth=2)
plot(sma21, color=color.red, linewidth=2)
plot(ema5High, color=color.green, linewidth=2)
plot(ema5Low, color=color.orange, linewidth=2)