Diese Strategie basiert auf dem Ehlers MESA Adaptive Moving Average und ist eine Trend-Trading-Strategie, die zwei Durchschnittskreuzungen verfolgt. Die typische Dual Moving-Average-Kreuzung Strategie besteht darin, dass man auf der schnellen Linie über die langsame Linie hinwegschlägt und unter der schnellen Linie unterhalb der langsamen Linie schlägt.
Im Zentrum dieser Strategie steht die Berechnung zweier Adaptive Moving Averages: der MAMA- und der FAMA-Linie. Die Formel zur Berechnung der MAMA-Linie lautet:
alpha = fl / dphase
alpha = iff(alpha < sl, sl, iff(alpha > fl, fl, alpha))
mama = alpha*src + (1 - alpha)*nz(mama[1])
Fl ist die schnelle, sl die langsame und dphase die Phasenunterschiede. alpha wird dynamisch an die Phasenunterschiede angepasst, um die Anpassungsparameter zu erreichen.
Die Formel für die Berechnung der FAMA-Linie lautet wie folgt:
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
Die FAMA-Linie ist die Low-Temperature-Gliederung der MAMA-Linie.
Die Strategie vergleicht die Größenverhältnisse zwischen den MAMA- und den FAMA-Linien, um zu bestimmen, ob sich ein Aufwärtstrend oder ein Abwärtstrend befindet, um ein Handelssignal zu erzeugen.
Die Strategie hat folgende Vorteile:
Mit dem Adaptive Moving Average werden die Parameter automatisch an Marktveränderungen angepasst, ohne dass ein fester Parameter manuell eingestellt wird.
Zusätzliche FAMA-Leitung für die niedrigdurchlässige Filter, die das falsche Durchbruchfilter ermöglicht.
Mit einem Dual Moving Average Design kann der Trend in den langen Linien des Marktes verfolgt werden.
Die Strategie ist klar und einfach zu verstehen und zu ändern.
Der visualisierte Indikator ist intuitiv und kann die Handelssignale deutlich erkennen.
Die Strategie birgt auch einige Risiken:
Bei einer Strategie mit doppelter Linie-Kreuzung können mehrere Handelssignale erzeugt werden, und es wird empfohlen, den Abstand und den Rückzug angemessen zu kontrollieren.
MAMA- und FAMA-Linien sind kompliziert zu berechnen und können durch falsche Parameter verzerrt werden.
Selbst angepasste Parameter können zu einer Überoptimierung führen und müssen in Verbindung mit anderen technischen Kennzahlen überprüft werden.
Die Doppel-Linien-Kreuzung ist zeitlich nachlässig und kann einen Trendwechsel verpassen.
Die Gefahr von Verlust durch falsche Durchbrüche ist zu beachten.
Die Strategie kann in folgenden Richtungen optimiert werden:
Optimieren Sie die Parameter-Einstellungen, um die optimale Kombination aus schnellen und langsamen Einschränkungen zu finden.
Es ist wichtig, dass die Verluste durch die Einführung von Stop-Loss-Strategien erhöht und die Einmal-Stop-Verluste streng kontrolliert werden.
In Kombination mit anderen Indikatoren filtern Sie Signale wie MACD, RSI usw., um falsche Durchbrüche zu vermeiden.
Es ist wichtig, die Trend-Anzeige zu erhöhen und den Rückschlag zu vermeiden.
Optimierung des Einstiegs-Rhythmus, Anpassung der Abstandsanforderungen bei der Überschneidung von zwei Linien und Verringerung der zu häufigen Transaktionen.
Optimierung der Stopp-Strategie, wobei unterschiedliche Stopps je nach Stärke des Trends eingesetzt werden können.
Verschiedene Sorten mit unterschiedlichen Parameter-Einstellungen werden getestet, um die optimale Parameterkombination zu finden.
Diese Strategie overall ist eine typische Trend-Tracking-Strategie, die einen visuellen Indikator mit Ehlers MESA Adaptive Moving Average erstellt und ein Handelssignal in einer binären Kreuzung erzeugt. Die Strategie hat die Vorteile von Parameter-Adaption, False Breakout und Visualisierung, aber auch Risiken wie Zeitverzögerung und Mehrfachhandel. In Zukunft können Verbesserungen in Bezug auf Parameteroptimierung, Stop-Loss-Strategie und Signalfilter vorgenommen werden, um die Strategie zu verbessern.
/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// @author LazyBear
//
// List of my public indicators: http://bit.ly/1LQaPK8
// List of my app-store indicators: http://blog.tradingview.com/?p=970
//
strategy("Ehlers MESA Adaptive Moving Average [LazyBear with ekoronin fix]", shorttitle="EMAMA_LB (ekoronin fix)", overlay=false, calc_on_every_tick=true, precision=0)
src=input(close, title="Source")
fl=input(.4, title="Fast Limit")
sl=input(.04, title="Slow Limit")
pi = 3.1415926
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 = .2*i2_ + .8*nz(i2[1])
q2 = .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = .2*re_ + .8*nz(re[1])
im = .2*im_ + .8*nz(im[1])
//p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1]))
p1 = iff(im!=0 and re!=0, 2*pi/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p = .2*p3 + .8*nz(p3[1])
spp = .33*p + .67*nz(spp[1])
//phase = atan(q1 / i1)
phase = 180/pi * atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = alpha*src + (1 - alpha)*nz(mama[1])
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
//pa=input(false, title="Mark crossover points")
//plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers")
//fr=input(false, title="Fill MAMA/FAMA Region")
//duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL")
//mamal=plot(mama, title="MAMA", color=red, linewidth=2)
//famal=plot(fama, title="FAMA", color=green, linewidth=2)
//fill(duml, mamal, red, transp=70, title="NegativeFill")
//fill(duml, famal, green, transp=70, title="PositiveFill")
//ebc=input(false, title="Enable Bar colors")
//bc=mama>fama?lime:red
//barcolor(ebc?bc:na)
longSpike=mama>fama? 1:0
shortSpike=mama<fama? 1:0
plot(longSpike, title = "Mama Long", style=line, linewidth=1, color=yellow)
plot(shortSpike, title = "Mama Short", style=line, linewidth=1, color=red)
//possig = iff(reverse and pos == 1, -1,
// iff(reverse and pos == -1, 1, pos))
if (longSpike)
strategy.entry("Long", strategy.long)
if (shortSpike)
strategy.entry("Short", strategy.short)