Die Moving Average Crossover Strategie ist eine Trend-Tracking-Strategie, die auf Moving Average Crossovers als Handelssignale basiert. Die Strategie nutzt Preiskreuze mit Moving Average Crossovers und zwei Moving Average Crossovers als Kauf- und Verkaufssignale, um einen Gewinn zu erzielen.
Die Hauptprinzipien der Strategie lauten wie folgt:
Berechnen Sie zwei Moving Averages, schneller oder langsamer, und wählen Sie zwischen SMA oder EMA.
Wenn Sie auf der schnellen Linie durch die langsame Linie gehen, tun Sie mehr; wenn Sie unter der schnellen Linie durch die langsame Linie gehen, platzieren Sie.
Der Kurs kann die Durchschnittslinie oder die Durchschnittslinie als Handelssignal durchbrechen.
Die Strategie kann für bestimmte Zeiträume eingerichtet werden.
Es gibt nur mehr Aktien für den Mehrwertmarkt und nur weniger Aktien für den Leerwertmarkt.
Optimierung durch bewegliche Durchschnittsparameter für unterschiedliche Perioden.
Die Strategie nutzt die Trend-Tracking-Funktion der Moving Average, um zu zeigen, dass ein Auftritt auf der kurzfristigen Durchschnittslinie einen Auftritt auf der langfristigen Durchschnittslinie darstellt und mehr getan werden sollte; umgekehrt, ein Auftritt unter der kurzfristigen Durchschnittslinie, der einen Abtritt auf der langfristigen Durchschnittslinie darstellt und eine Position reduziert wird.
Die wichtigsten Vorteile der Strategie sind:
Das Prinzip ist einfach, leicht umzusetzen, die Handelssignale klar.
Es ist auch möglich, Trends effektiv zu verfolgen und Kauf- und Verkaufsmöglichkeiten zeitnah zu erfassen.
Die Kombination verschiedener Parameter für die Gleichgewichtung ist für verschiedene Marktumgebungen geeignet.
Es gibt die Möglichkeit, nur mehr oder nur weniger zu tun, um unbestimmte Umkehroperationen zu vermeiden.
Es ist möglich, die Laufzeit der Strategie so einzustellen, dass bestimmte Zeitabschnitte vermieden werden.
Durch die Optimierung von Parametern kann die Strategie-Performance kontinuierlich verbessert werden.
Die wichtigsten Risiken dieser Strategie sind:
Es ist leicht zu falschen Signalen zu gelangen, und es sollte vermieden werden, zu häufig zu handeln.
Die Darstellung ist abhängig von der Auswahl der Mittellinienparameter. Eine falsche Auswahl kann zu Verlusten führen.
Einige Verzögerungen verhindern vorzeitige Einreise und späte Ausstieg.
Nicht geeignet für ein bewegtes Marktumfeld.
Die durchschnittliche Kreuzung hat eine gewisse Zufälligkeit und kann den Verlust nicht vollständig vermeiden.
Risiken können durch die Bestätigung von Transaktionen, Optimierung von Parametern oder in Kombination mit anderen Indikatoren verringert werden.
Die Strategie kann in folgenden Bereichen optimiert werden:
Hinzufügen von /%(Line - ShortMa) /ShortMa) /(Line - LongMa) /LongMa) / als mittellinien-Schrägfilterbedingungen.
Optimieren Sie die Parameter der beweglichen Durchschnittsphase und testen Sie verschiedene Kombinationen.
Mehrfache Bestätigung bei der Aufnahme von Indikatoren wie MACD oder RSI
Setzen Sie Stop-Loss-Bedingungen und begrenzen Sie die Einzelschäden.
Unterscheidung zwischen Trendmarkt und Schaltmarkt, für den Einsatz von Konditionen.
Es wird versucht, die beste Lösung zu finden, indem man die unterschiedlichsten Positionen über einen längeren Zeitraum testet.
Die mobile Linear-Cross-Strategie ist eine einfache und praktische Trend-Tracking-Strategie. Der Vorteil ist, dass sie leicht zu implementieren ist und Trends effektiv verfolgen kann. Der Nachteil ist, dass sie rückständig ist und möglicherweise mehr falsche Signale erzeugt.
/*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)