Strategie zur Beobachtung der Trendentwicklung durch zwei gleitende Durchschnittswerte

Schriftsteller:ChaoZhang, Datum: 2024-02-04
Tags:

img

Übersicht

Die Dual Moving Average Trend Tracking Strategie nutzt eine Kombination aus schnellen und langsamen gleitenden Durchschnitten, um die Trendrichtung zu bestimmen, zusammen mit der Leuchterkörperfarbe als Einstiegssignale.

Grundsätze

Die Strategie verwendet einen langsam gleitenden 20-Perioden-Durchschnitt, um den Gesamttrend zu definieren. Ein Aufwärtstrend deutet auf einen Aufwärtstrend hin, während ein Abwärtstrend einen Abwärtstrend deutet. Ein 5-Perioden-schneller MA dient als Eintrittsfilter. Die Trades werden nur ausgelöst, wenn der Preis den schnellen MA durchbricht. Darüber hinaus werden die jüngsten N-Kerzenfarben überprüft.

Die Strategie untersucht die Preisbewegung anhand von drei Dimensionen - Trend, kurzfristige MA und Kerzenkörper, um die Signalzuverlässigkeit zu verbessern.

Vorteile

  1. Kombination von Trendfolgen und mittlerer Umkehrung, anpassbar an alle Marktbedingungen.

  2. Mehrfacher Überprüfung früherer Signale verbessert die Gewinnrate, indem falsche Signale vermieden werden.

  3. Optimierbar unter Verwendung von MA-Längen, geprüften Kerzenfarben usw.

  4. Klar, präzise Logik, für Anfänger geeignet.

Risiken

  1. Whipsaws während von Range-Märkten können zu Verlusten/Abzügen führen.

  2. Versuchen Sie, die Anzahl der geprüften Kerzen zu ändern oder die mittlere Umkehrung zu deaktivieren.

  3. Umfangreiche Rückprüfung erforderlich, um Parameter und Leistung zu validieren.

Erweiterung

  1. Erforschen Sie andere MA-Typen, z. B. EMA, KAMA usw.

  2. Hinzufügen von Positionsgrößenregelungen, z. B. auf Basis von fester Menge oder Anteil an Eigenkapital.

  3. Einbauen Sie einen Stop-Loss-Mechanismus.

  4. Versuch mit verschiedenen Instrumenten zur Überprüfung der Stabilität.

Schlussfolgerung

Die Dual-MA-Strategie profitiert von Trend-Trades, während sie in kürzeren Zeitrahmen die mittlere Reversion-Alpha extrahiert. Leistung und Gewinnpotenzial können durch Optimierung weiter verbessert werden. Trotz ihrer Einfachheit ermöglicht sie Anfängern, die wichtigsten Konzepte rund um die Kombination von Trend und mittlerer Reversion zu verstehen.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 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 ? 1 : high < ma ? -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 < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Mehr