Die gleitende Durchschnitts-Crossover-Strategie ist eine Trendfolgestrategie, die auf einem gleitenden Durchschnitts-Crossover als Handelssignal basiert.
Die wichtigsten Grundsätze dieser Strategie sind:
Berechnen Sie zwei gleitende Durchschnitte, eine schnelle und eine langsame, können SMA oder EMA wählen.
Gehen Sie lang, wenn die schnelle Linie über die langsame Linie kreuzt, nah Position, wenn die schnelle Linie unter die langsame Linie kreuzt.
Kann als Handelssignale den Preisbruch oder den gleitenden Durchschnitts-Crossover wählen.
Sie können einen Zeitraum für die Umsetzung der Strategie festlegen.
Kann nur lang gehen auf einem Bullenmarkt und nur kurz gehen auf einem Bärenmarkt.
Optimierung der gleitenden Durchschnittsparameter durch Backtesting für verschiedene Zeiträume.
Die Strategie nutzt den Trend nach der Fähigkeit der gleitenden Durchschnitte. Wenn der kurzfristige MA über den langfristigen MA überschreitet, deutet dies auf einen Aufwärtstrend hin, der lang gehen sollte. Umgekehrt sollte der Abwärtstrend die Position reduzieren.
Die wichtigsten Vorteile dieser Strategie sind:
Einfaches Prinzip, einfach umzusetzen, klare Handelssignale.
Kann Trends effektiv verfolgen und Handelschancen rechtzeitig erfassen.
Kann verschiedene MA-Parameter für verschiedene Marktumgebungen kombinieren.
Kann nur lang oder nur kurz wählen, um unsichere Umkehrungen zu vermeiden.
Sie können eine Strategie für die Laufzeit festlegen, um bestimmte Zeiträume zu vermeiden.
Kann die Strategie durch Parameteroptimierung kontinuierlich verbessern.
Die wichtigsten Risiken dieser Strategie sind:
Sie sind anfällig für falsche Signale, vermeiden Sie zu häufige Trades.
Die Leistung hängt von den MA-Parametern ab, eine unsachgemäße Auswahl kann zu Verlusten führen.
Es gibt eine gewisse Verzögerung, vermeiden Sie vorzeitige Einreise und verspätete Ausreise.
Nicht geeignet für marktbezogene Umgebungen.
MA-Kreuzungen haben eine gewisse Zufälligkeit, können Verluste nicht vollständig vermeiden.
Die Risiken können durch Volumenbestätigung, Parameteroptimierung oder Verwendung mit anderen Indikatoren verringert werden.
Diese Strategie kann in folgenden Aspekten optimiert werden:
Fügen Sie einen Neigungsfilter wie % ((Line - ShortMa) /ShortMa) / ((Line - LongMa) /LongMa) hinzu.
Optimieren Sie gleitende Durchschnittszeiten, testen Sie verschiedene Kombinationen.
Hinzufügen von Indikatoren wie MACD oder RSI für mehrfache Bestätigung.
Setzen Sie Stop Loss, um Einzelhandelsverluste zu begrenzen.
Unterscheidung zwischen Trending- und Ranging-Märkten für bedingte Nutzung.
Versuche verschiedene Aufbewahrungszeiten, um ein optimales System zu finden.
Die gleitende Durchschnitts-Crossover-Strategie ist eine einfache und praktische Trendfolgestrategie. Die Vorteile sind eine einfache Implementierung und eine effektive Trendverfolgung. Die Nachteile sind Verzögerungen und anfällig für falsche Signale. Die Strategie kann durch Parameteroptimierung und Indikatorfilterung verbessert werden, um eine bessere Performance in starken Trendmärkten zu erzielen.
/*backtest start: 2023-09-10 00:00:00 end: 2023-09-17 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gliese581d //@version=4 strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000) //SETTINGS longs_on = input(title="Long Trades enabled", defval=true) shorts_on = input(title="Short Trades enabled", defval=true) long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"]) short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"]) ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"]) ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1) ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"]) ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1) //MOVING AVERAGES ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len) ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len) //STRATEGY //trade entries long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1) start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1) end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1) end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1) in_time = true strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry) strategy.close("Long", when=longs_on and not shorts_on and short_entry) strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry) strategy.close("Short", when=shorts_on and not longs_on and long_entry) //PLOTTING //color background last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000) bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na bgcolor(color=bgcol, transp=90) plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue) plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black) plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green) plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)