Indicateurs: ZigZag

 

ZigZag:

L'indicateur Zigzag est une série de sections reliant des hauts et des bas importants au graphique des prix.

ZigZag

Auteur : MetaQuotes

 

Comment puis-je obtenir les valeurs du prix de clôture de la barre supérieure et inférieure d'un zigzag dans le code de l'EA ?

 

L'indicateur Zig-Zag est extrêmement utile pour déterminer les tendances des prix, les zones de support et de résistance, ainsi que les configurations graphiques classiques telles que la tête et les épaules, les doubles fonds et les doubles sommets. L'indicateur Zig-Zag utilise à la fois les hauts et les bas de l'oscillation dans ses calculs :

  • Swing Highs : Lorsqu'un prix (généralement la clôture) est à la fois plus élevé que le prix qui le précède et celui qui le suit.
  • Swing Lows : Lorsqu'un prix est à la fois plus bas que le prix qui le précède et plus bas que le prix qui le suit.

L'indicateur Zig-Zag peut utiliser des pourcentages ou des points dans sa construction. Pour construire l'indicateur Zig-Zag, il doit y avoir un certain pourcentage ou nombre de points entre un sommet et un creux avant qu'une ligne ne soit tracée. Le graphique ci-dessous du contrat à terme E-mini Nasdaq 100 illustre visuellement la différence entre un Zig-Zag de retracement des prix de 3 % et un Zig-Zag de retracement des prix de 5 % :


Remarquez que dans le graphique ci-dessus, un Zig-Zag avec un pourcentage de retracement de 3 % forme des lignes plus distinctes qu'un Zig-Zag avec un pourcentage de retracement de 5 %. L'objectif de l'utilisation d'un Zig-Zag avec un pourcentage de retracement plus élevé est d'aider à éliminer les bruits de prix qui ne sont pas significatifs pour l'analyse du trader.

L'indicateur Zig-Zag est extrêmement efficace pour découvrir les cycles boursiers tout en éliminant les bruits de prix à court terme.

L'indicateur Zig-Zag est extrêmement efficace pour filtrer les bruits à court terme et identifier les tendances significatives et les changements importants dans les prix du marché.

Le graphique ci-dessous du contrat à terme E-mini S&P 500 illustre l'efficacité de l'indicateur Zig-Zag pour trouver les zones de support et de résistance et les ruptures de prix :


Le graphique ci-dessus de l'e-mini utilise une valeur de retracement Zig-Zag de 5 % ; par conséquent, seules les variations de prix de 5 % ou plus sont indiquées, ce qui aide le trader ou l'investisseur à long terme à déterminer les zones importantes de support, de résistance et de rupture de prix.

À gauche du graphique, le S&P 500 formait un triangle de consolidation. Lorsque les prix ont franchi la résistance, un achat à long terme a été généré. Au milieu du graphique, l'indicateur Zig-Zag a permis de montrer que le S&P 500 se trouvait dans un canal de prix ascendant. Acheter dans les zones où les prix touchaient la ligne de tendance du support inférieur et vendre lorsque les prix touchaient la ligne de résistance supérieure se serait avéré extrêmement rentable.

L'utilisation de l'indicateur Zig-Zag pour des transactions à plus court terme peut également s'avérer rentable. Le graphique ci-dessous d'Intel (INTC) montre une configuration classique de tête et d'épaules facilement identifiée par l'indicateur Zig-Zag (retracement de 1 $) :


La configuration tête-épaules facilement identifiable a donné un signal de vente lorsque le cours de l'épaule droite a cassé la ligne de tendance oblique ascendante.

L'indicateur Zig-Zag est un excellent outil d'analyse technique pour identifier les configurations graphiques classiques. L'indicateur Zig-Zag est également efficace pour réduire le bruit et aider le trader technique à voir la véritable direction du marché.

 
m'aide à comprendre le comportement du zz
 

Dans ce code, spécifique au bloc ci-dessous, les variables "res" sont-elles nécessaires ? Dans d'autres blocs, je comprends son utilisation, mais pas dans ce bloc.

//--- rejet final
   for(shift=limit;shift<rates_total && !IsStopped();shift++)
     {
      res=0.0;
      switch(whatlookfor)
        {
         case 0: // recherche d'un pic ou d'une pelouse
            if(lastlow==0 && lasthigh==0)
              {
               if(HighMapBuffer[shift]!=0)
                 {
                  lasthigh=high[shift];
                  lasthighpos=shift;
                  whatlookfor=Sill;
                  ZigzagBuffer[shift]=lasthigh;
                  res=1;
                 }
               if(LowMapBuffer[shift]!=0)
                 {
                  lastlow=low[shift];
                  lastlowpos=shift;
                  whatlookfor=Pike;
                  ZigzagBuffer[shift]=lastlow;
                  res=1;
                 }
              }
            break;
         case Pike: // recherche d'un pic
            if(LowMapBuffer[shift]!=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)
              {
               ZigzagBuffer[lastlowpos]=0.0;
               lastlowpos=shift;
               lastlow=LowMapBuffer[shift];
               ZigzagBuffer[shift]=lastlow;
               res=1;
              }
            if(HighMapBuffer[shift]!=0.0 && LowMapBuffer[shift]==0.0)
              {
               lasthigh=HighMapBuffer[shift];
               lasthighpos=shift;
               ZigzagBuffer[shift]=lasthigh;
               whatlookfor=Sill;
               res=1;
              }
            break;
         case Sill: // recherche de pelouse
            if(HighMapBuffer[shift]!=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)
              {
               ZigzagBuffer[lasthighpos]=0.0;
               lasthighpos=shift;
               lasthigh=HighMapBuffer[shift];
               ZigzagBuffer[shift]=lasthigh;
              }
            if(LowMapBuffer[shift]!=0.0 && HighMapBuffer[shift]==0.0)
              {
               lastlow=LowMapBuffer[shift];
               lastlowpos=shift;
               ZigzagBuffer[shift]=lastlow;
               whatlookfor=Pike;
              }
            break;
         default: return(rates_total);
        }
     }


Est-ce vraiment nécessaire ?

 
soi kawasaki:

Dans ce code, spécifique au bloc ci-dessous, les variables "res" sont-elles nécessaires ? Dans d'autres blocs, je comprends son utilisation, mais pas dans ce bloc.


Est-elle vraiment nécessaire ?

Vérifiez ce qu'elle fait avant le code que vous montrez. Ou mieux encore : supprimez-la et voyez ce qu'il advient de l'indicateur zigzag.
 
Mladen Rakic:
Vérifiez ce qu'il fait avant le code que vous montrez. Ou mieux encore : supprimez-le et voyez ce qu'il advient de l'indicateur zigzag.

Merci pour votre réponse : )

J'ai fait Print() pour vérifier la valeur et l'endroit où elle est utilisée mais je n'ai pas réussi à comprendre pourquoi elle était nécessaire dans ce bloc.

J'ai également supprimé l'indicateur, mais il fonctionne très bien sans.

J'étais curieux car c'est l'indicateur par défaut de MT5.

Je cherchais juste un deuxième avis si j'ai mal compris l'existence de l'utilisation dans ce bloc de code.

 
Bonjour, chers membres de la communauté ! J'aimerais vous demander de partager vos réflexions sur la question suivante - sur la base de laquelle nous pouvons supposer (ou mieux affirmer avec certitude) que la formation du segment actuel entre les extrema est achevée. Je suis bien conscient de la complexité de cette question, et je serai donc reconnaissant pour toute idée. Et il y a encore une question - si le paramètre Profondeur - Nombre minimum de bougies comme intervalle entre les extrema (maxima ou minima), alors comment se fait-il que l'indicateur dessine une ligne entre le maximum et le minimum à la valeur de ce paramètre 12, mais en même temps entre le maximum et le minimum - le nombre de bougies est inférieur à 12 ?
 
Andrey Kornishkin #:

Comment puis-je obtenir les valeurs du prix de clôture de la barre supérieure et inférieure d'un zigzag dans le code de l'EA ?

Utilisez iCustom() pour parcourir les barres de droite à gauche sur le graphique à la recherche d'une valeur non vide du tampon de l'indicateur. Voici la barre que vous recherchez, vous pouvez obtenir n'importe quel prix de chandelier à partir de celle-ci.

 

Aleksandr Shirin dessine une ligne entre le maximum et le minimum à la valeur de ce paramètre 12, mais en même temps entre le maximum et le minimum - le nombre de bougies est inférieur à 12 ?

Cela dépend aussi du nombre de points dépassés par le prix (paramètre ExtDeviation).