Vorteilliche Bewegliche Durchschnittsbrechung

Schriftsteller:ChaoZhang, Datum: 2023-11-15 11:00:25
Tags:

img

Übersicht

Dies ist ein klassisches Trendfolgensystem. Es verwendet gleitende Durchschnittskreuzungen, um die Trendrichtung zu bestimmen, und tritt ein, wenn der Preis aus den Donchian-Kanälen ausbricht. Der Donchian-Kanal-Parameter ist auf 50 Tage festgelegt, um kurzfristigen Marktlärm auszufiltern. Die gleitenden Durchschnitte sind 40-Tage- und 120-Tage-exponentielle gleitende Durchschnitte, die mittelfristige bis langfristige Trends besser erfassen können. Der Stop-Loss wird auf 4x ATR unter dem Preis festgelegt, um den Verlust auf einzelnen Trades effektiv zu kontrollieren.

Strategie Logik

Die Strategie stützt sich hauptsächlich auf folgende Punkte:

  1. Die 40-Tage- und 120-Tage-exponentiellen gleitenden Durchschnitte werden verwendet, um einen Trend-Bestimmungsindikator zu konstruieren. Wenn die schnelle Linie über die langsame Linie von unten kreuzt, ist es ein goldenes Kreuzsignal, das einen Aufwärtstrend anzeigt. Wenn die schnelle Linie unter die langsame Linie von oben kreuzt, ist es ein Todeskreuzsignal, das einen Abwärtstrend anzeigt.

  2. Der Donchian Channel-Parameter ist auf 50 Tage eingestellt, um Marktlärm auszufiltern.

  3. Der Stop-Loss wird auf 4x ATR unter dem Preis gesetzt. ATR kann die Marktvolatilität und das Risiko effektiv messen.

  4. Exponentielle gleitende Durchschnitte passen besser zu den aktuellen Kursentwicklungen, während einfache gleitende Durchschnitte zu glatt sind.

  5. Die 50-Tage-Kanalperiode funktioniert gut mit den gleitenden Durchschnitten von 40 und 120 Tagen, um falsche Ausbrüche effektiv auszufiltern.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Die Kombination der gleitenden Durchschnittswerte kann die Markttrendrichtung effektiv bestimmen.

  2. Der Donchian-Kanal filtert Lärm aus und vermeidet das Verfolgen von Höhen und Tiefen.

  3. Die Einstellung des Stop-Loss ist angemessen, um Verluste bei einzelnen Trades zu kontrollieren und Konto-Blowups zu vermeiden.

  4. Exponentielle gleitende Durchschnitte passen besser zu den Preisänderungstendenzen und ermöglichen längere Halteperioden, die der Trendhandelsidee entsprechen.

  5. Bei den gleitenden Durchschnittsparametern wird ein Gleichgewicht zwischen Tendenzempfindlichkeit und Stabilität des Geräuschfilters hergestellt.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Langfristige Risiken: Als Trendstrategie können bei längeren seitlichen Bandbreiten oder Trendumkehrungen große Verluste auftreten.

  2. Risiko eines falschen Ausbruchs: Es kann einen gewissen Prozentsatz falscher Ausbrüche geben, wenn der Preis in der Nähe der Kanalbänder liegt und unnötige Trades verursacht.

  3. Parameter, die das Risiko festlegen: Die Einstellungen für gleitende Durchschnitte und Kanäle sind subjektiv.

  4. Zu enge Stop-Loss-Risiken: Wenn der Stop-Loss zu eng eingestellt wird, kann dies zu zu vielen Stop-Outs führen, was sich auf die Rentabilität auswirkt.

Lösungen:

  1. Um Risiken bei langen Haltungszeiten zu vermeiden, müssen die Haltungszeiten sorgfältig festgelegt werden.
  2. Optimieren Sie die Parameter, um die Ausbruchssignale stabiler und zuverlässiger zu machen.
  3. Daten aus verschiedenen Märkten testen und Parameterkombinationen optimieren.
  4. Verlassen Sie die Haltestellen vernünftigerweise, um zu häufige Haltestellen zu vermeiden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Verschiedene Kombinationen von gleitenden Durchschnitten können getestet werden, um die optimalen Parameter zu finden.

  2. Optimieren Sie die Kanalzeit und -einstellungen, um Ausbruchssignale effektiver zu machen.

  3. Optimieren Sie die Stop-Loss-Strategie. Nehmen Sie Trailing-Stops während der Trendperioden und feste Stops nach dem Ende des Trends an.

  4. Hinzufügen von Bestätigungsindikatoren wie MACD, KD, um die Signalgenauigkeit zu verbessern.

  5. Einführung von Positionsgrößenstrategien, Pyramiden in Trendperioden, um Gewinne zu optimieren.

  6. Auswahl von Parameterkombinationen entsprechend den verschiedenen Produktmerkmalen, um das System zu verbessern.

Schlussfolgerung

Das ist ein typisches und einfaches Trendfolgensystem. Der Kern liegt in der Verwendung von gleitenden Durchschnitten und Kanalbrechungen. Die Stop-Loss-Strategie ist auch klassisch und praktisch. Die Strategie kann als grundlegender Rahmen für die Entwicklung von Quantensystemen dienen und kann auch direkt für relativ stabile Gewinne eingesetzt werden. Eine weitere Optimierung durch Tests kann die Stabilität und Rentabilität des Systems verbessern. Zusammenfassend bietet die Strategie Benutzerfreundlichkeit und Vielseitigkeit, was sie als grundlegende quantitative Handelsstrategie eignet.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

Mehr