quoi que vous essayiez de faire, ce n'est probablement pas la façon de le faire.
Regardez dans 'Indicateurs personnalisés, experts et tests de stratégie' -- j'ai expliqué la façon d'utiliser iCustom...
Je pense que vous devriez changer l'indicateur et faire deux buffers supplémentaires pour obtenir ces données.
la valeur basse est par exemple LOWbuff[]
la valeur haute est HIGHbuff[]
maintenant si vous avez un nouveau haut (dans l'indicateur) alors vous vérifiez si cette valeur est différente de la valeur stockée en ce moment... si c'est le cas, vous avez une nouvelle valeur...
1.2815 ZigZag max par exemple
barre 1
barre2
bar3
...
la nouvelle valeur de barx est de 1.2755
votre sera quelque chose comme HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]
puis vous utilisez Icustom(NULL,0, "ZigZag",3,0) ; --> et voilà ! vous avez votre nombre
J'espère que vous comprenez ce que je veux dire...
zolero
Regardez dans 'Indicateurs personnalisés, experts et tests de stratégie' -- j'ai expliqué la façon d'utiliser iCustom...
Je pense que vous devriez changer l'indicateur et faire deux buffers supplémentaires pour obtenir ces données.
la valeur basse est par exemple LOWbuff[]
la valeur haute est HIGHbuff[]
maintenant si vous avez un nouveau haut (dans l'indicateur) alors vous vérifiez si cette valeur est différente de la valeur stockée en ce moment... si c'est le cas, vous avez une nouvelle valeur...
1.2815 ZigZag max par exemple
barre 1
barre2
bar3
...
la nouvelle valeur de barx est de 1.2755
votre sera quelque chose comme HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]
puis vous utilisez Icustom(NULL,0, "ZigZag",3,0) ; --> et voilà ! vous avez votre nombre
J'espère que vous comprenez ce que je veux dire...
zolero
zolero:
quoi que vous essayiez de faire, ce n'est probablement pas la façon de le faire.
Regardez dans 'Indicateurs personnalisés, experts et tests de stratégie' -- j'ai expliqué la façon d'utiliser iCustom...
Je pense que vous devriez changer l'indicateur et faire deux buffers supplémentaires pour obtenir ces données.
la valeur basse est par exemple LOWbuff[]
la valeur haute est HIGHbuff[]
maintenant si vous avez un nouveau haut (dans l'indicateur) alors vous vérifiez si cette valeur est différente de la valeur stockée en ce moment... si c'est le cas, vous avez une nouvelle valeur...
1.2815 ZigZag max par exemple
barre 1
barre2
bar3
...
la nouvelle valeur de barx est de 1.2755
votre sera quelque chose comme HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]
puis vous utilisez Icustom(NULL,0, "ZigZag",3,0) ; --> et voilà ! vous avez votre nombre
J'espère que vous comprenez ce que je veux dire...
zolero
Non, en fait je ne comprends pas, quoi que vous essayiez de faire, ce n'est probablement pas la façon de le faire.
Regardez dans 'Indicateurs personnalisés, experts et tests de stratégie' -- j'ai expliqué la façon d'utiliser iCustom...
Je pense que vous devriez changer l'indicateur et faire deux buffers supplémentaires pour obtenir ces données.
la valeur basse est par exemple LOWbuff[]
la valeur haute est HIGHbuff[]
maintenant si vous avez un nouveau haut (dans l'indicateur) alors vous vérifiez si cette valeur est différente de la valeur stockée en ce moment... si c'est le cas, vous avez une nouvelle valeur...
1.2815 ZigZag max par exemple
barre 1
barre2
bar3
...
la nouvelle valeur de barx est de 1.2755
votre sera quelque chose comme HIGHBUFF[1.2815,1.2815,....,1.2815,1.2755,1.2755... . ]
puis vous utilisez Icustom(NULL,0, "ZigZag",3,0) ; --> et voilà ! vous avez votre nombre
J'espère que vous comprenez ce que je veux dire...
zolero
Tout ce que je veux c'est que mon EA sache dans quelle direction l'indicateur zigzag pointe (HAUT OU BAS). COMMENT DOIS-JE M'Y PRENDRE ?
Tout ce que je veux, c'est que mon EA sache dans quelle direction l'indicateur zigzag pointe (HAUT OU BAS). COMMENT DOIS-JE M'Y PRENDRE ?
Vous voulez probablement connaître les deux dernières valeurs (car le zigzag n'a pas toujours une valeur). Vous devez donc lire les deux dernières valeurs d'un indicateur :int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }maintenant vous avez deux nombres : zig -- dernière valeur et zag -- valeur précédente
si (zag>zig) l'indicateur descend
si (zig>zag) l'indicateur monte
zolero
zolero:
si(zag>zig) l'indicateur affiche une baisse
si (zig>zag) l'indicateur augmente
zolero
MERCI, c'est fait, ça marche comme sur des roulettes.
Tout ce que je veux, c'est que mon EA sache dans quelle direction l'indicateur zigzag pointe (vers le haut ou vers le bas). comment puis-je faire cela ?
Vous voulez probablement connaître les deux dernières valeurs (car le zigzag n'a pas toujours une valeur). Vous devez donc lire les deux dernières valeurs d'un indicateur :int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }maintenant vous avez deux nombres zig -- dernière valeur et zag -- valeur précédente
si(zag>zig) l'indicateur affiche une baisse
si (zig>zag) l'indicateur augmente
zolero
c0d3:
APRÈS L'AVOIR TESTÉ,
si(zag<zig) l'indicateur montre une baisse
si(zig<zag) l'indicateur monte
Je pense que c'est correct, il donnait une direction opposée avec (zag>zig), (zig>zag).
zolero:
si(zag>zig) l'indicateur affiche une baisse
si (zig>zag) l'indicateur augmente
zolero
MERCI, je l'ai eu, ça marche comme sur des roulettes. Tout ce que je veux, c'est que mon EA sache dans quelle direction l'indicateur zigzag pointe (vers le haut ou vers le bas). comment puis-je faire cela ?
Vous voulez probablement connaître les deux dernières valeurs (car le zigzag n'a pas toujours une valeur), vous devez donc lire les deux dernières valeurs d'un indicateur :int n, i; double zag, zig; i=0; while(n<2) { if(zig>0) zag=zig; zig=iCustom(NULL, 0, "ZigZag", 0, i); if(zig>0) n+=1; i++; }maintenant vous avez deux nombres zig -- dernière valeur et zag -- valeur précédente
si(zag>zig) l'indicateur affiche une baisse
si (zig>zag) l'indicateur augmente
zolero
APRÈS L'AVOIR TESTÉ,
si(zag<zig) l'indicateur montre une baisse
si(zig<zag) l'indicateur monte
Je pense que c'est correct, il donnait une direction opposée avec (zag>zig), (zig>zag).
c0d3:
Je regardais déjà la dernière ligne sur le graphique. Cela signifie que la dernière ligne regardait vers le bas [ou vers le haut]. Cela devrait signifier que l'on s'attend à un mouvement à la hausse [ou à la baisse]. mais il y a un petit problème à le prendre comme un signal de hausse ou de baisse : le zigzag peut se redessiner [et le fait souvent]. cela signifie que si la ligne entre deux points est orientée vers le sud (de 1,2900 à 1,2850), cela ne signifie pas que le prix va monter. Il va probablement monter, mais il y a une grande chance qu'après un mouvement vers le bas, vous ayez une nouvelle ligne vers le bas (de 1,2900 à 1,2820) et ainsi de suite. Ce que je veux dire, c'est qu'avoir une ligne sur le graphique ne signifie pas que le mouvement dans cette direction est terminé.
je pense que c'est correct, il donnait des directions opposées avec (zag>zig), (zig>zag).
int n, i ; double zag, zig ;
i=0 ;
while(n<2)
{
if(zig>0) zag=zig ;
zig=iCustom(NULL, 0, "ZigZag", 0, i) ;
si(zig>0) n+=1 ;
i++ ;
}
&nbint n, i ; double zag, zig ; i=0 ; while(n<2) { if(zig>0) zag=zig ; zig=iCustom(NULL, 0, "ZigZag", 0, i) ; if(zig>0) n+=1 ; i++ ; }sp;int n, i ; double zag, zig ; i=0 ; while(n<2) { if(zig>0) zag=zig ; zig=iCustom(NULL, 0, "ZigZag", 0, i) ; if(zig>0) n+=1 ; i++ ; }
J'ai modifié un peu le code du zigzag pour montrer ce que j'entends par faux signal. Comme on dit : une image en dit plus que 1000 mots....
![](https://c.mql5.com/mql4/forum/2006/09/zigzag_modified.gif)
La ligne rouge est le zigzag original et il va du bas vers le haut et vice-versa dans les meilleurs moments... du moins c'est ce qui semble. Mais si vous codez un ea, alors l'ea reçoit des signaux qui sont proches de la ligne jaune. cela peut être encore pire, car j'ai fait un hack très rapide...
le code redessine une ligne vers le haut ou vers le bas jusqu'à ce que la ligne suivante soit dessinée et ainsi, pas à pas, on change la ligne jaune (en supprimant les valeurs max et min) jusqu'à obtenir une ligne rouge...
![](https://c.mql5.com/mql4/forum/2006/09/zigzag_modified.gif)
La ligne rouge est le zigzag original et il va du bas vers le haut et vice-versa dans les meilleurs moments... du moins c'est ce qui semble. Mais si vous codez un ea, alors l'ea reçoit des signaux qui sont proches de la ligne jaune. cela peut être encore pire, car j'ai fait un hack très rapide...
le code redessine une ligne vers le haut ou vers le bas jusqu'à ce que la ligne suivante soit dessinée et ainsi, pas à pas, on change la ligne jaune (en supprimant les valeurs max et min) jusqu'à obtenir une ligne rouge...
![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
Voici ce que j'ai obtenu jusqu'à présent :
ZigZagHigh=iCustom(NULL,0, "ZigZag",MODE_HIGH,0) ;
ZigZagLow=iCustom(NULL,0, "ZigZag",MODE_LOW,0) ;
Les lignes sont tracées sur le graphique, mais ZigZagHigh et ZigZagLow sont toutes deux égales à zéro lorsque je lance le programme.
Comment puis-je déterminer la tendance de l'indicateur ZigZag avec la fonction icustom ?
Merci