![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vous ne dormez jamais ? ???![](https://c.mql5.com/forextsd/smiles/biggrin.png)
Il est 1 heure du matin en France...
Juste pour être sûr aussi. A la fin, la première somme que nous avons nlmprices[r-k]
C'est la somme de tous les prix ou de tous les prix avec m comme momentum (qui peut être 1, 2 ou plus comme avec un RMI ?
Je dis cela parce que c'est étrange avec mon code quand je mets length>6 la NonLagMa n'est plus sur les bougies mais en dessous comme ce n'est pas habituel avec les autres MA (Tillson, SSmoother etc.)
Merci
Zilliq
Par exemple un nonlagma avec une longueur de 4 : c'est ok.
Mais avec une longueur de 9 en bleu c'est très en dessous de la différence par exemple d'un Tillson MA en rouge qui reste sur les bougies avec une longueur de 6 et qui est plus fluide.
C'est logique mais la NonlagMa semble être plus réactive mais moins lisse n'est-ce pas ?
Par exemple, un non-lagma d'une longueur de 4 : c'est bon.
Mais avec une longueur de 9 en bleu est très en dessous à la différence par exemple d'un Tillson MA en rouge qui reste sur les bougies avec une longueur de 6 et qui est plus lisse.
C'est logique mais le NonlagMa semble être plus réactif mais moins lisse, n'est-ce pas ?zilliq
Oui. En règle générale, plus un filtre est réactif (sauf s'il s'agit d'un filtre d'ajustement / de recalcul), moins il sera lisse.
Je pense avoir un problème avec mon code, car avec la longueur de 1, le NonlagMa n'est pas sur le prix à la différence de votre code
Je vais chercher où est le problème il semble être sur l'alfa
Voir U
Zilliq
Je pense que j'ai un problème avec mon code, car avec la longueur de 1, le NonlagMa n'est pas sur le prix à la différence de votre code
Je vais chercher où est le problème il semble être sur l'alfa
Voir U
ZilliqZillq
La longueur 1 devrait être égale au prix lui-même (chaque moyenne doit retourner le prix lui-même pour la longueur 1)
Salut Mladen,
J'espère que tu vas bien,
Je pense avoir réussi à coder le Nonlagma.
Et je vois quelque chose de très curieux : Il semble très similaire à un T3 Tillson comme vous le voyez sur mon graphique (en violet le nonlagma et en bleu un T3). Avez-vous déjà vu cela et avez-vous une explication ? La T3 est plus lisse et a le même décalage "Nonlag". Je pensais que le Nonlagma serait meilleur.
Peut-être une question stupide mais quel est pour vous le "meilleur" MA (T3, Oma, NonlagMa, Hull etc...), qui signifie le meilleur ratio lisse/nonlag ?
Bonne nuit et merci pour votre aide![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Zilliq
Bonjour Mladen,
J'espère que tu vas bien,
Je pense avoir réussi à coder le Nonlagma.
Et je vois quelque chose de très curieux : Il semble très similaire à un T3 Tillson comme vous le voyez sur mon graphique (en violet le nonlagma et en bleu un T3). Avez-vous déjà vu cela et avez-vous une explication ? La T3 est plus lisse et a le même décalage "Nonlag". Je pensais que le Nonlagma serait meilleur.
Peut-être une question stupide mais quel est pour vous le "meilleur" MA (T3, Oma, NonlagMa, Hull etc...), qui signifie le meilleur ratio lisse/nonlag ?
Bonne nuit et merci pour votre aide![](https://c.mql5.com/forextsd/smiles/teeth_smile.png)
Zilliq
zilliq
Chaque moyenne, si vous comparez des périodes courtes, ressemble aussi à une autre moyenne (c'est pourquoi, par exemple, les moyennes adaptatives ressemblent à n'importe quelle autre moyenne lorsque la période est courte - elles n'ont simplement pas la "place" pour montrer ce qu'elles sont réellement).
Ce n'est que lorsque les périodes de calcul sont suffisamment longues que vous pouvez voir la différence. Voici une comparaison d'une T3 et d'une ma non lag sur 25 périodes - la différence ne cesse de croître au fur et à mesure que la période s'allonge - l'orange est la ma non lag, le vert est la T3.
Merci Mladen,
Je comprends, et c'est très clair sur votre graphique.
C'est étrange parce que quand j'utilise le code nonlagma I sur mon graphique il n'est pas aussi proche du prix que sur votre graphique (bleu est T3 violet est Nonlagma)
ici avec une période de 20
Je sais que ce n'est pas le même langage de code que MT4 mais pouvez-vous confirmer le calcul de l'alfa que nous appliquons sur chaque prix :
*************************************
pi = 3.14159265358979323846264338327950288
Cyclee=4
Coeff = 3*pi
Phase = Longueur-1
Len = Longueur*Cyclee + Phase
poids=0
somme=0
pour i=0 à Len
si i<=Phase-1 alors
t = 1.0*i/(Phase-1)
sinon
t = 1,0 + (i-Phase+1)*(2,0*Cyclee-1,0)/(Cyclee*Longueur-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
si t <= 0,5 alors
g = 1
endif
alfa = g * beta
sum=close*alfa
poids=alfa
suivant
**************************
Parce qu'il semble qu'il y ait une grande différence et je ne comprends pas pourquoi.
Après cela, nous ajoutons tous les alfa*prix sur une période de "Longueur".
Même chose pour alfa, nous ajoutons tous les alfa sur la période de "Length".
****************************
sum1=summation[Longueur](sum)
poids1=summation[Longueur](poids)
nonlagma=somme1/poids1
****************************
Mais je n'ai pas le même Nonlagma ? ??
Ai-je oublié quelque chose dans le code MT4 ?
Merci beaucoup pour votre aide![](https://c.mql5.com/forextsd/smiles/nerd.png)
Zilliq
Merci Mladen,
Je comprends, et c'est très clair sur votre graphique.
C'est étrange parce que quand j'utilise le code nonlagma I sur mon graphique il n'est pas aussi proche du prix que sur votre graphique (bleu est T3 violet est Nonlagma)
ici avec une période de 20
Je sais que ce n'est pas le même langage de code que MT4 mais pouvez-vous confirmer le calcul de l'alfa que nous appliquons sur chaque prix :
*************************************
pi = 3.14159265358979323846264338327950288
Cyclee=4
Coeff = 3*pi
Phase = Longueur-1
Len = Longueur*Cyclee + Phase
poids=0
somme=0
pour i=0 à Len
si i<=Phase-1 alors
t = 1.0*i/(Phase-1)
sinon
t = 1,0 + (i-Phase+1)*(2,0*Cyclee-1,0)/(Cyclee*Longueur-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
si t <= 0,5 alors
g = 1
endif
alfa = g * beta
sum=close*alfa
poids=alfa
suivant
**************************
Parce qu'il semble qu'il y ait une grande différence et je ne comprends pas pourquoi.
Après cela, nous ajoutons tous les alfa*prix sur une période de "Longueur".
Même chose pour alfa, nous ajoutons tous les alfa sur la période de "Length".
****************************
sum1=summation[Longueur](sum)
poids1=summation[Longueur](poids)
nonlagma=somme1/poids1
****************************
Mais je n'ai pas le même Nonlagma ? ??
Ai-je oublié quelque chose dans le code MT4 ?
Merci beaucoup pour votre aide![](https://c.mql5.com/forextsd/smiles/nerd.png)
Zilliq
Comment fonctionne la fonction cosinus dans votre plateforme : utilise-t-elle des radians ou des degrés comme argument ?
Le cosinus de Metatrader utilise des radians.
Nous utilisons aussi le radian
Il y a peut-être une explication : Dans le code MT4, on multiplie alfa par prix.
Je suppose que c'est le prix, je périods avant, non ?
Et donc on doit ajouter, par exemple avec une len de 5
alfa*close[4]+alfa*close[3]+alfa*close[2]+alfa*close[1] and alfa*close
ou
alfa[4]*fermeture[4]+alfa[3]*fermeture[3]+alfa[2]*fermeture[2]+alfa[1]*fermeture[1] et alfa*fermeture ?
Et c'est étrange, car avec une longueur de 1 la len est égale à 4 (4*1+0) et donc le nonlagma ne peut pas être égal à close car on ajoute l'alfa*prix des 4 dernières périodes.
Merci pour vos prochains commentaires![](https://c.mql5.com/forextsd/smiles/nerd.png)
Zilliq
J'utilise votre code, mais pour mieux comprendre j'utilise le code le plus simple du NonlagMav3
double pi = 3.1415926535 ;
double Coeff = 3*pi ;
int Phase = Length-1 ;
double Len = Length*Cycle + Phase ;
si ( counted_bars > 0 ) limit=Bars-counted_bars ;
si ( barres comptées < 0 ) retour(0) ;
si ( counted_bars ==0 ) limit=Bars-Len-1 ;
for(shift=limit;shift>=0;shift--)
{
Poids=0 ; Somme=0 ; t=0 ;
pour (i=0;i<=Len-1;i++)
{
g = 1.0/(Coeff*t+1) ;
si (t <= 0.5 ) g = 1 ;
beta = MathCos(pi*t) ;
alfa = g * beta ;
prix = iMA(NULL,0,1,0,MODE_SMA,Prix,shift+i) ;
Somme += alfa*prix ;
Poids += alfa ;
si ( t < 1 ) t += 1.0/(Phase-1) ;
else if ( t < Len-1 ) t += (2*Cycle-1)/(Cycle*Length-1) ;
}
if (Weight > 0 ) MABuffer[shift] = Sum/Weight ;