
Die Moving Average Band Strategie ist eine Trendverfolgungsstrategie, die auf mehreren Moving Averages basiert. Sie überwacht gleichzeitig schnelle und langsame Moving Averages und erzeugt Handelssignale, wenn der Preis die Moving Average Band durchbricht. Die Strategie kombiniert gleichzeitig Trendbeurteilung und Überkauf-Überverkauf-Indikatoren, um die mittleren langen Trends effektiv zu erfassen.
Die Strategie verwendet gleichzeitig 5 schnelle bewegende Durchschnitte (5, 8, 13, 20, 30 Tage) und 4 langsame bewegende Durchschnitte (45, 70, 105 und 150 Tage), wobei die schnelle Linie einen internen beweglichen Mittelwert und die langsame Linie einen externen beweglichen Mittelwert bildet. Ein Kaufsignal wird erzeugt, wenn der Preis die innere Durchschnittslinie überschreitet.
Darüber hinaus beurteilt die Strategie auch die langfristige Tendenz. Ein Kaufsignal wird nur dann berücksichtigt, wenn der Preis über dem 200-Tage-Moving-Average liegt. Im Gegensatz dazu wird ein Verkaufssignal nur dann berücksichtigt, wenn der Preis unter dem 200-Tage-Moving-Average fällt.
Die Strategie hat folgende Vorteile:
Mehrfache bewegliche Durchschnitts-Entwurf, kann die Richtung der Tendenz genau zu beurteilen. Innen-und Außen-Moving-Average-Band kombiniert mit schnellen und langsamen Durchschnittslinien, die Identifizierung von mittleren und langen Linie Trends ist gut.
Eine kontinuierliche Breakout-Mechanik kann falsche Breakouts wirksam filtern. Gleichzeitig wird ein Großteil der schnellen Breakouts verlangt, um eine Trendänderung sicherzustellen.
Beurteilen Sie die langfristigen Trends, um zu vermeiden, dass Sie bei der Berechnung eingehalten werden. In Übereinstimmung mit der 200-Tageslinie-Beurteilung sollten Sie nur dann eine Position eröffnen, wenn sich der Trend umdreht.
Der Moving Average selbst hat die Funktion, Trends zu verfolgen, und in Kombination mit dem Over-Buy-Over-Sell-Indikator legt er einen Stop-Loss-Punkt fest, um das Risiko zu kontrollieren.
Diese Strategie birgt folgende Risiken:
Die Strategie kann die Entstehung von Verlusten nicht vollständig vermeiden, wenn ein falscher Preisbruch auftritt.
Das Risiko von Verlusten bei schwankenden Trends. Wenn die Marktlage in der langen Zeit schwankt, kann der Stop-Loss-Punkt häufig getroffen werden, was zu größeren Verlusten führt.
Parameteroptimierungsrisiken. Die falsche Einstellung der Moving Average-Parameter kann zu Fehlsignalen führen, was zu größeren Verlusten führt.
Entsprechende Lösungen:
Eine angemessene Lockerung der Stop-Loss-Punkte, um den Preisen genügend Raum zu geben, um zu laufen. Oder eine Ljetrail Stop-Loss-Methode, um die Stop-Line mit dem Preis zu laufen.
Trends zu analysieren und zu verhindern, dass man sich in der Schwankungsphase in der Irrbahn befindet. Filtern Sie beispielsweise mit DMI, MACD und anderen Indikatoren.
Mit Hilfe von Historik und Parameteroptimierung wird die optimale Parameterkombination ausgewählt. Die Parameterwirkung wird auch auf der Festplatte verfolgt und dynamisch optimiert.
Die Strategie kann in folgenden Dimensionen optimiert werden:
Optimierung der Moving Average-Parameter und Auswahl der optimalen Periodenzahl. Die optimale Kombination der Parameter kann durch Rückvergleiche der Moving Averages verschiedener Periodenzahlen gefunden werden.
Zunehmenden Trend zu entscheiden, die Indikatoren für die Filterung. Zum Beispiel RSI Indikator zu entscheiden, überkaufen überverkaufen, Brin-Band zu entscheiden, Kanal-Breakout, etc. Vermeiden Sie, wenn die Tendenz unklar ist, blind Position zu setzen.
Der Einsatz von Adaptive Moving Averages. In Echtzeit werden die Parameter der Moving Averages entsprechend der Marktveränderung und -fluktuation optimiert, um sie besser an die aktuelle Marktlage anzupassen.
In Kombination mit einem maschinellen Lernmodell wird die Wahrscheinlichkeit von Trends beurteilt. Die Erstellung eines Probabilitätsmodells bewertet die Wahrscheinlichkeit eines Durchbruchs und hilft den Entscheidungssystemen, die Eintrittszeit zu bestimmen.
Optimierung der Stop-Strategie, damit die Stop-Loss besser auf den Preis verfolgt. Zum Beispiel traillig Stop-Loss oder automatische Schrumpf-Stop-Loss, um die Stop-Line intelligenter zu machen.
Die Moving-Average-Band-Strategie ist eine der häufigsten Trend-Tracking-Strategien. Sie kombiniert sowohl die schnelle als auch die langsame Linie, um den mittleren Long-Trend zu beurteilen, und setzt einen kontinuierlichen Durchbruch-Filtermechanismus ein, um den Einstieg zu entscheiden. Die Strategie kombiniert Trend-Tracking und Überkauf-Überverkauf-Urteile und kann die Effektivität durch Parameteroptimierung und Kennzahlenverstärkung weiter verbessern.
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)
trima(_src, _len) =>
sma(sma(_src, _len), _len)
hma(_src, _len) =>
wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) +
ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)
ma(_src, _len) =>
hma__1 = hma(_src, _len)
ema_1 = ema(_src, _len)
sma_1 = sma(_src, _len)
wma_1 = wma(_src, _len)
trima__1 = trima(_src, _len)
zlema__1 = zlema(_src, _len)
dema__1 = dema(_src, _len)
tema__1 = tema(_src, _len)
matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 :
matype == "wma" ? wma_1 : matype == "trima" ? trima__1 :
matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1
ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)
maColor(ma, maRef) =>
if change(ma) <= 0 and ma05 < maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 > maRef
color.new(color.navy, 20)
else
if change(ma) < 0 and ma05 > maRef
color.new(color.red, 20)
else
if change(ma) >= 0 and ma05 < maRef
color.new(color.navy, 20)
else
color.gray
aboveConfirmed(x,maRef)=>
above=true
for i=1 to x
if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
above:=false
above
aboveMost(x,len)=>
above=0
boolean=false
if close[len]>ma05[len]
above:=above+1
if close[len]>ma08[len]
above:=above+1
if close[len]>ma13[len]
above:=above+1
if close[len]>ma20[len]
above:=above+1
if close[len]>ma30[len]
above:=above+1
if close[len]>ma45[len]
above:=above+1
if close[len]>ma70[len]
above:=above+1
if close[len]>ma105[len]
above:=above+1
if close[len]>ma150[len]
above:=above+1
if close[len]>ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowMost(x,len)=>
above=0
boolean=false
if close[len]<ma05[len]
above:=above+1
if close[len]<ma08[len]
above:=above+1
if close[len]<ma13[len]
above:=above+1
if close[len]<ma20[len]
above:=above+1
if close[len]<ma30[len]
above:=above+1
if close[len]<ma45[len]
above:=above+1
if close[len]<ma70[len]
above:=above+1
if close[len]<ma105[len]
above:=above+1
if close[len]<ma150[len]
above:=above+1
if close[len]<ma200[len]
above:=above+1
if(above>=x)
boolean:=true
boolean
belowConfirmed(x,maRef)=>
below=true
for i=1 to x
if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
below:=false
below
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)
closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)
isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))
strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)