Dies ist eine Trendfolgestrategie, die auf gleitenden Durchschnitts-Kreuzungssignalen basiert. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt von unten kreuzt, wird ein Kaufsignal generiert. Wenn der schnelle gleitende Durchschnitt unter den langsamen gleitenden Durchschnitt von oben kreuzt, wird ein Verkaufssignal generiert.
Die Strategie verwendet zwei gleitende Durchschnitte, einen 20-Perioden-einfachen gleitenden Durchschnitt und einen 30-Perioden-einfachen gleitenden Durchschnitt. Wenn der 20-Perioden-MA über den 30-Perioden-MA überschreitet, wird ein Kaufsignal generiert. Wenn der 20-Perioden-MA unter den 30-Perioden-MA überschreitet, wird ein Verkaufssignal ausgelöst.
Die gleitenden Durchschnitte selbst dienen als Trendindikatoren, die die Markttrendrichtung effektiv darstellen. Das Crossover-Prinzip ermöglicht es der Strategie, Trendumkehrpunkte zeitnah zu erfassen und Handelssignale zu generieren. Die 20- und 30-Tage-Perioden werden angemessen so eingestellt, dass sie den Markttrend widerspiegeln, ohne zu empfindlich auf Lärm zu reagieren.
Die wichtigsten Vorteile dieser Strategie sind:
Zu den wichtigsten Risiken dieser Strategie gehören:
Lösungen:
Die wichtigsten Aspekte zur Optimierung der Strategie:
Das gleitende Durchschnitts-Crossover-System ist ein einfaches und effektives Trendfolgestrategie. Die Logik ist klar und leicht zu verstehen, sehr geeignet für Anfänger zu lernen. Es erzeugt Handelssignale basierend auf gleitenden Durchschnitts-Crossovers und Gewinne aus dem Handel entlang des Trends. Die Strategie kann auf viele Arten optimiert werden, um stabiler und effizienter zu werden.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h basePeriod: 15m 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)