Handelsstrategie mit doppelten gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2024-01-26 14:45:55
Tags:

img

Übersicht

Die Dual Moving Average Trading Strategie ist eine quantitative Handelsstrategie, die Handelssignale mithilfe von zwei gleitenden Durchschnittslinien mit unterschiedlichen Zyklen konstruiert.

Strategieprinzip

Die Kerntechnik dieser Strategie ist die Analyse von zwei gleitenden Durchschnittslinien. Die Strategie definiert eine 5-tägige kurze Zyklus gleitende Durchschnittslinie ma0 und eine 21-tägige lange Zyklus gleitende Durchschnittslinie ma1. Durch den Vergleich der Differenzwerte osc0 zwischen Preis und ma0 und osc1 zwischen ma0 und ma1 bestimmt die Strategie den aktuellen Trendstatus.

Wenn osc0>0 und osc1>0, bedeutet dies, dass die kurzfristige gleitende Durchschnittslinie über die langfristige Linie gekreuzt hat, was einen Aufwärtstrend anzeigt. Wenn osc0<0 und osc1<0, bedeutet dies, dass die kurzfristige Linie unterhalb gekreuzt hat, was einen Bärentrend anzeigt.

Wenn osc0<0 und osc1<0 nach der Einnahme einer Long-Position eine Trendumkehr bedeutet, sollte die Long-Position geschlossen werden. Wenn osc0>0 und osc1>0 nach der Einnahme einer Short-Position auch eine Umkehr bedeutet, sollte die Short-Position geschlossen werden.

Analyse der Vorteile

Die Handelsstrategie mit doppelten gleitenden Durchschnitten hat folgende Vorteile:

  1. Einfaches Prinzip und leicht verständlich und umsetzbar, geeignet für Anfänger im Quant-Trading;

  2. Trendverfolgung, gute Verfolgung von Markttrends mit angemessenem Gewinn;

  3. Die Zyklusparameter der gleitenden Durchschnittswerte können für verschiedene Marktbedingungen angepasst werden;

  4. Kann mit anderen Indikatoren oder Strategien für höhere Gewinne kombiniert werden.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Die Unfähigkeit, die Positionen rechtzeitig zu beenden, wenn sich der Trend umkehrt, kann zu großen Verlusten führen;

  2. Schwierig, auf den Märkten mit Bandbreiten aufgrund häufiger Stop-Loss zu profitieren;

  3. Schwierig, Parameter wie 5-Tage- und 21-Tage-Zyklen zu optimieren;

  4. Verzögerte Handelssignale, verspäteter Markteintritt können die Gewinnrate beeinflussen.

Optimierungsrichtlinien

Die Handelsstrategie für den doppelten gleitenden Durchschnitt kann in folgenden Aspekten optimiert werden:

  1. Kombination mit VOL zur Bestätigung des tatsächlichen Trendbeginns, um falsche Ausbrüche zu vermeiden;

  2. Hinzufügen anderer Filter wie Preisdurchbruch, Volumenerweiterung, um die Signalzuverlässigkeit zu gewährleisten;

  3. Dynamische Stopps setzen, um Verluste rechtzeitig zu reduzieren;

  4. Optimierung von Parametern wie dem Schwellenwert der gleitenden Durchschnittsdifferenz zur Verringerung von Fehlern;

  5. Verwenden Sie maschinelles Lernen, um die Zyklen der gleitenden Durchschnitte automatisch zu optimieren.

Schlussfolgerung

Zusammenfassend ist die Dual Moving Average Trading Strategie eine ziemlich klassische und praktische Trend-Folge-Strategie. Sie hat eine einfache Logik für Anfänger, gut im Tracking von Trends, sehr erweiterbar, um sie mit anderen Techniken zu kombinieren. Aber sie hat auch einige Mängel, weitere Optimierungen sind erforderlich, um mit außergewöhnlichen Marktbedingungen umzugehen, das Risiko zu reduzieren und die Stabilität zu verbessern.


/*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=2
strategy("[STRATEGY][RS]MA Strategy test V0", overlay=true)
length0 = input(5)
length1 = input(21)

isinsession = not na(time('1', '0400-1500'))
price = open

ma0 = ema(ema(price, length0), length0)
ma1 = ema(ema(price, length1), length1)
plot(ma0, color=navy)
plot(ma1, color=black)

osc0 = price-ma0
osc1 = ma0-ma1

isbull = osc0 > 0 and osc1 > 0
buy_condition = isinsession and isbull and not isbull[1]
buy_exit_condition = osc0 < 0 and osc1 < 0
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)

isbear = osc0 < 0 and osc1 < 0
sell_condition = isinsession and isbear and not isbear[1]
sell_exit_condition = osc0 > 0 and osc1 > 0
strategy.entry("sell", strategy.short, comment="sell", when=sell_condition)
strategy.close(id='sell', when=sell_exit_condition)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Mehr