Strategie zur Beobachtung der Trendentwicklung durch zwei gleitende Durchschnittswerte

Schriftsteller:ChaoZhang, Datum: 2024-01-24 11:28:57
Tags:

img

Übersicht

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.

Strategie Logik

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:

  1. Verwenden Sie den Preiskanal, um die Richtung des höheren Zeitrahmens zu bestimmen
  2. Verwenden Sie schnelle MA, um den kurzfristigen Trend zu bestimmen und Handelssignale zu generieren
  3. Kombination von zusätzlichen Kerzenfilter, um falsche Signale während Konsolidierungen zu vermeiden

Durch die Beurteilung des Trendverlaufs über Zeiträume hinweg kann Marktlärm wirksam gefiltert und die Trendrichtung bestätigt werden.

Analyse der Vorteile

Die Strategie zur Beobachtung der Trendentwicklung von Doppel gleitenden Durchschnitten hat folgende Vorteile:

  1. Das Dual-MA-System kann Trends effektiv identifizieren und die wichtigste Trendrichtung bestimmen
  2. Der schnelle MA erzeugt Handelssignale, um Trendumkehrungen rechtzeitig zu erfassen
  3. Der Preiskanal bestimmt den höheren Zeitrahmentrend, um nicht durch kurzfristige Marktlärm irregeführt zu werden
  4. Die rot/grünen Kerzenfilter verringern die Wahrscheinlichkeit falscher Signale bei Konsolidierungen
  5. Anpassbare Parameter ermöglichen eine Optimierung für verschiedene Märkte, um die Robustheit zu verbessern
  6. Stop-Loss-Strategien können hinzugefügt werden, um das Risiko pro Handel effektiv zu kontrollieren

Abschließend kann gesagt werden, dass diese Strategie eine relativ gute Stabilität aufweist und in stark entwickelten Märkten gut abschneidet.

Risikoanalyse

Die Strategie zur Verfolgung der Trendentwicklung durch zwei gleitende Durchschnitte birgt auch einige Risiken, insbesondere:

  1. Bei längeren Konsolidierungen ist es anfällig für falsche Signale und aufeinanderfolgende kleine Verluste.
  2. Falsche Einstellungen von Parametern können die Handelssignale verzögern und die besten Einstiegsmöglichkeiten verpassen
  3. Die Risikopositionen sind in der Regel in den folgenden Kategorien aufgeführt:

Zu den entsprechenden Maßnahmen zur Risikominderung gehören:

  1. Anpassung der Einstellungen des roten/grünen Kerzenfilters, um die Handelsfrequenz in konsolidierten Märkten zu senken
  2. Optimierung schneller MA-Parameter zur Sicherstellung der rechtzeitigen Erzeugung von Handelssignalen
  3. Hinzufügen von beweglichem oder prozentuale Stop-Loss zur strikten Kontrolle pro Handelsverlust

Optimierungsrichtlinien

Es besteht Raum für eine weitere Optimierung der Strategie, vor allem in folgenden Bereichen:

  1. Einbeziehung von Volatilitätsindikatoren wie ATR zur automatischen Anpassung von Stop Loss
  2. Maschinelles Lernen zur automatischen Optimierung von Parametern nutzen
  3. Neuronale Netzwerkmodule hinzufügen, um die Trendrichtung zu bestimmen
  4. Aufbau von Ensemble-Systemen, die mehrere Indikatoren und Filter kombinieren

Diese Optimierungsrichtungen können die Stabilität, Anpassungsfähigkeit und das Intelligenzniveau der Strategie weiter verbessern.

Schlussfolgerung

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)

Mehr