Cette stratégie est basée sur les moyennes mobiles adaptatives d’Ehlers MESA et a été conçue comme une stratégie de trading de tendance qui suit deux croisements de moyennes. Faire plus lorsque la ligne rapide traverse la ligne lente et faire moins lorsque la ligne rapide traverse la ligne lente, est une stratégie de croisement de moyenne mobile double typique.
Le cœur de cette stratégie est de calculer deux moyennes mobiles adaptables: la ligne MAMA et la ligne FAMA. Parmi elles, la formule de calcul de la ligne MAMA est la suivante:
alpha = fl / dphase
alpha = iff(alpha < sl, sl, iff(alpha > fl, fl, alpha))
mama = alpha*src + (1 - alpha)*nz(mama[1])
dont fl est la limite rapide, sl est la limite lente, dphase est l’écart de phase. alpha est ajusté dynamiquement en fonction de l’écart de phase pour réaliser des paramètres de lissage adaptatifs.
La formule de calcul de la ligne FAMA est la suivante:
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
La ligne FAMA est une ligne de lissage à basse fréquence de la ligne MAMA.
La stratégie consiste à comparer la relation entre la taille de la ligne MAMA et celle de la ligne FAMA pour déterminer si la tendance est à la hausse ou à la baisse, afin de générer un signal de transaction.
Cette stratégie présente les avantages suivants:
Les paramètres sont automatiquement ajustés en fonction des variations du marché, sans qu’il soit nécessaire de définir manuellement des paramètres fixes.
Le filtrage de la fausse rupture est possible avec l’ajout d’un filtrage FAMA de faible perméabilité.
La conception des moyennes mobiles doubles permet de suivre les tendances à long terme sur le marché.
La logique de la stratégie est simple et claire, facile à comprendre et à modifier.
L’indicateur visuel est intuitif et permet de voir clairement les signaux de trading.
Cette stratégie comporte aussi des risques:
Les stratégies de croisement de deux lignes sont susceptibles de générer plusieurs signaux de transaction, et il est recommandé de contrôler correctement l’espacement et le retrait.
Les calculs des lignes MAMA et FAMA sont complexes et une mauvaise configuration des paramètres peut entraîner une distorsion de la courbe.
Les paramètres d’adaptation peuvent conduire à une sur-optimisation et doivent être validés en combinaison avec d’autres indicateurs techniques.
Les croisements binaires sont en retard de temps et risquent de manquer le point de conversion de la tendance.
Il faut être attentif au risque de dommages causés par une fausse percée.
Cette stratégie peut être optimisée dans les directions suivantes:
Optimiser les paramètres afin de trouver la meilleure combinaison de paramètres de restriction rapide et lente.
Il a ajouté: “Nous devons renforcer nos stratégies de stop-loss et contrôler strictement les stop-loss individuels”.
Il peut être combiné avec d’autres indicateurs pour filtrer les signaux, tels que MACD, RSI, etc., afin d’éviter les fausses ruptures.
Il est important d’augmenter les indicateurs de jugement de tendance et d’éviter le trading à contre-courant.
Optimiser le rythme d’entrée, ajuster les exigences d’espacement des croisements de deux lignes et réduire les transactions trop fréquentes.
Optimiser les stratégies de freinage en choisissant des freins différents en fonction de l’intensité de la tendance
Test des différences de paramètres de différentes variétés pour trouver la meilleure combinaison de paramètres.
La stratégie overall est une stratégie de suivi de tendance typique, qui utilise l’adaptation des moyennes mobiles d’Ehlers MESA pour construire un indicateur visuel et générer un signal de négociation de manière bidirectionnelle. La stratégie présente des avantages tels que l’adaptation des paramètres, la fausse rupture de la houle et la visualisation, mais également des risques tels que le retard de temps et le trading multiple.
/*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)