Die Dual Moving Average Trend Tracking Strategie ist eine Strategie, die eine Kombination von schnellen und langsamen gleitenden Durchschnitten verwendet, um den Markttrend zu bestimmen, und Handelssignale erzeugt, wenn sich die Trendrichtung ändert.
Die Dual Moving Average Trend Tracking Strategie verwendet zwei gleitende Durchschnitte - einen schnellen gleitenden Durchschnitt (5 Perioden) und einen langsamen gleitenden Durchschnitt (21 Perioden). Der schnelle MA wird verwendet, um Handelssignale zu generieren, während der langsame MA verwendet wird, um die Markttrendrichtung zu bestimmen. Wenn der schnelle MA über den langsamen MA überschreitet, wird ein Kaufsignal generiert. Wenn der schnelle MA unter dem langsamen MA überschreitet, wird ein Verkaufssignal generiert.
Die Strategie verwendet auch einen Preiskanalindikator, um den Trend zu bestimmen. Der Preiskanal wird durch die gleitenden Durchschnitte der höchsten und niedrigsten Preise bestimmt. Wenn die Preise durch den Kanal durchbrechen, zeigt dies eine Trendumkehr an. Diese Strategie verwendet zwei Preiskanäle mit Perioden von 21 bzw. 5, die den MA-Perioden entsprechen.
Bei der Bestimmung von Kauf- und Verkaufssignalen erfordert die Strategie, dass aufeinanderfolgende rote/grüne Kerzen als zusätzliche Filterbedingung erscheinen (nutzeranpassbar).
Zusammenfassend lässt sich die Tendenz dieser Strategie folgendermaßen definieren:
Durch die Beurteilung des Trendverlaufs über Zeiträume hinweg kann Marktlärm wirksam gefiltert und die Trendrichtung bestätigt werden.
Die Strategie zur Beobachtung der Trendentwicklung von Doppel gleitenden Durchschnitten hat folgende Vorteile:
Abschließend kann gesagt werden, dass diese Strategie eine relativ gute Stabilität aufweist und in stark entwickelten Märkten gut abschneidet.
Die Strategie zur Verfolgung der Trendentwicklung durch zwei gleitende Durchschnitte birgt auch einige Risiken, insbesondere:
Zu den entsprechenden Maßnahmen zur Risikominderung gehören:
Es besteht Raum für eine weitere Optimierung der Strategie, vor allem in folgenden Bereichen:
Diese Optimierungsrichtungen können die Stabilität, Anpassungsfähigkeit und das Intelligenzniveau der Strategie weiter verbessern.
Zusammenfassend ist die Dual Moving Average Trend Tracking-Strategie eine relativ robuste Trend-Folge-Strategie. Sie kombiniert gleitende Durchschnitte und Preiskanäle, um die Trendrichtung und -stärke zu bestimmen und Handelssignale mit dem schnellen MA zu generieren. Die zusätzlichen Kerzenfilter helfen auch, falsche Signale zu vermeiden. Die anpassbaren Parameter ermöglichen die Anpassung an verschiedene Marktumgebungen. Es gibt auch viel Raum für weitere Optimierungen, um eine zuverlässige, intelligente automatisierte Handelsstrategie aufzubauen.
/*backtest start: 2023-12-24 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") src = useohlc4 == true ? ohlc4 : close fastsma = ema(src, 5) //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend //ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 //trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1] trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1] trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1] trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 //Lines colorfastsma = usefastsma == true ? red : na plot(fastsma, color = colorfastsma, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)