Strategie für die Verlagerung des gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-09-18 17:35:37
Tags:

Übersicht

Die gleitende Durchschnitts-Crossover-Strategie ist eine Trendfolgestrategie, die auf einem gleitenden Durchschnitts-Crossover als Handelssignal basiert.

Strategieprinzip

Die wichtigsten Grundsätze dieser Strategie sind:

  1. Berechnen Sie zwei gleitende Durchschnitte, eine schnelle und eine langsame, können SMA oder EMA wählen.

  2. Gehen Sie lang, wenn die schnelle Linie über die langsame Linie kreuzt, nah Position, wenn die schnelle Linie unter die langsame Linie kreuzt.

  3. Kann als Handelssignale den Preisbruch oder den gleitenden Durchschnitts-Crossover wählen.

  4. Sie können einen Zeitraum für die Umsetzung der Strategie festlegen.

  5. Kann nur lang gehen auf einem Bullenmarkt und nur kurz gehen auf einem Bärenmarkt.

  6. 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.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Einfaches Prinzip, einfach umzusetzen, klare Handelssignale.

  2. Kann Trends effektiv verfolgen und Handelschancen rechtzeitig erfassen.

  3. Kann verschiedene MA-Parameter für verschiedene Marktumgebungen kombinieren.

  4. Kann nur lang oder nur kurz wählen, um unsichere Umkehrungen zu vermeiden.

  5. Sie können eine Strategie für die Laufzeit festlegen, um bestimmte Zeiträume zu vermeiden.

  6. Kann die Strategie durch Parameteroptimierung kontinuierlich verbessern.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Sie sind anfällig für falsche Signale, vermeiden Sie zu häufige Trades.

  2. Die Leistung hängt von den MA-Parametern ab, eine unsachgemäße Auswahl kann zu Verlusten führen.

  3. Es gibt eine gewisse Verzögerung, vermeiden Sie vorzeitige Einreise und verspätete Ausreise.

  4. Nicht geeignet für marktbezogene Umgebungen.

  5. 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.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Fügen Sie einen Neigungsfilter wie % ((Line - ShortMa) /ShortMa) / ((Line - LongMa) /LongMa) hinzu.

  2. Optimieren Sie gleitende Durchschnittszeiten, testen Sie verschiedene Kombinationen.

  3. Hinzufügen von Indikatoren wie MACD oder RSI für mehrfache Bestätigung.

  4. Setzen Sie Stop Loss, um Einzelhandelsverluste zu begrenzen.

  5. Unterscheidung zwischen Trending- und Ranging-Märkten für bedingte Nutzung.

  6. Versuche verschiedene Aufbewahrungszeiten, um ein optimales System zu finden.

Zusammenfassung

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)

Mehr