Indikatoren: ZigZag

 

ZigZag:

Der Zigzag Indikator besteht aus einer Reihe von Segmenten die die signifikanten Hochs und Tiefs des Kurscharts verbinden.

ZigZag Indikator

Autor: MetaQuotes Software Corp.

 

Wie kann ich die Schlusskurswerte des oberen und unteren Balkens eines Zickzacks im EA-Code erhalten?

 

Der Zig-Zag-Indikator ist äußerst nützlich, um Preistrends, Unterstützungs- und Widerstandsbereiche sowie klassische Chartmuster wie Kopf und Schultern, Doppelböden und Doppelspitzen zu bestimmen. Der Zig-Zag-Indikator verwendet in seiner Berechnung sowohl Swing-Hochs als auch Swing-Tiefs:

  • Swing Highs: Wenn ein Kurs (in der Regel der Schlusskurs) sowohl höher ist als der Kurs davor als auch danach.
  • Schwung-Tiefs: Wenn ein Kurs sowohl niedriger ist als der vorherige als auch als der nachfolgende Kurs.

Der Zig-Zag-Indikator kann sowohl Prozentsätze als auch Punkte in seiner Konstruktion verwenden. Um den Zig-Zag-Indikator zu konstruieren, muss ein bestimmter Prozentsatz oder eine bestimmte Anzahl von Punkten zwischen einem Swing-Hoch und einem Swing-Tief liegen, bevor eine Linie gezeichnet wird. Das nachstehende Diagramm des E-mini Nasdaq 100 Futures-Kontrakts veranschaulicht visuell den Unterschied zwischen einem Preis-Retracement-Zig-Zag von 3 % und einem Preis-Retracement-Zig-Zag von 5 %:


Beachten Sie im obigen Chart, dass ein Zig-Zag mit einem Retracement-Prozentsatz von 3 % deutlichere Linien bildet als ein Zig-Zag mit einem Retracement-Prozentsatz von 5 %. Der Zweck der Verwendung eines Zig-Zag-Indikators mit einem höheren Retracement-Prozentsatz besteht darin, das Preisrauschen zu eliminieren, das für die Analyse des Händlers nicht von Bedeutung ist.

Der Zig-Zag-Indikator ist äußerst effektiv bei der Aufdeckung von Aktienzyklen, während er kurzfristiges Preisrauschen ausblendet.

Der Zig-Zag-Indikator ist äußerst effektiv beim Herausfiltern von kurzfristigem Rauschen und bei der Identifizierung signifikanter Trends und bedeutender Veränderungen der Marktpreise.

Das folgende Diagramm des E-mini S&P 500 Futures-Kontrakts veranschaulicht, wie effektiv der Zig-Zag-Indikator beim Auffinden von Unterstützungs- und Widerstandsbereichen sowie Kursausbrüchen war:


Das obige Diagramm des E-Mini verwendet einen Zig-Zag-Retracement-Wert von 5 %; daher werden nur Preisänderungen von 5 % oder mehr angezeigt, was einem langfristigen Händler oder Anleger hilft, wichtige Bereiche der Unterstützung, des Widerstands und von Preisausbrüchen zu bestimmen.

Auf der linken Seite des Diagramms bildete der S&P 500 ein dreieckiges Konsolidierungsmuster. Als die Kurse den Widerstand durchbrachen, wurde ein langfristiger Kauf generiert. In der Mitte des Diagramms zeigte der Zig-Zag-Indikator an, dass sich der S&P 500 in einem Aufwärtskanal befand. Käufe in Bereichen, in denen die Kurse die untere Unterstützungstrendlinie berührten, und Verkäufe, wenn die Kurse die obere Widerstandslinie berührten, hätten sich als äußerst profitabel erwiesen.

Die Verwendung des Zig-Zag-Indikators für kurzfristige Trades kann sich ebenfalls als profitabel erweisen. Die nachstehende Grafik von Intel (INTC) zeigt ein klassisches Kopf-Schulter-Muster, das mit dem Zig-Zag-Indikator leicht zu erkennen ist (1 $ Retracement):


Das leicht zu erkennende Kopf-Schulter-Muster gab ein Verkaufssignal, als der Kurs auf der rechten Schulter die schräg nach oben verlaufende Trendlinie durchbrach.

Der Zig-Zag-Indikator ist ein hervorragendes technisches Analyseinstrument zur Identifizierung klassischer Chartmuster. Der Zig-Zag-Indikator ist auch ein wirksames Mittel zur Reduzierung von Rauschen und hilft dem technischen Händler, die wahre Marktrichtung zu erkennen.

 
hilft mir, das Verhalten von zz zu verstehen
 

in diesem Code, speziell für den untenstehenden Block, wird die Variable "res" benötigt? in anderen Blöcken verstehe ich ihre Verwendung, aber nicht in diesem Block.

//--- endgültige Ablehnung
   for(shift=limit;shift<rates_total && !IsStopped();shift++)
     {
      res=0.0;
      switch(whatlookfor)
        {
         case 0: // Suche nach Spitze oder Rasen
            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: // Suche nach Spitze
            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: // Suche nach Rasen
            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);
        }
     }


wirklich benötigt?

 
soi kawasaki:

In diesem Code, speziell für den unten stehenden Block, wird die Variable "res" benötigt. In anderen Blöcken wird sie verwendet, aber nicht in diesem Block.


wirklich benötigt?

Prüfen Sie, was er vor dem von Ihnen gezeigten Code damit macht. Oder noch besser: Entfernen Sie es und sehen Sie, was mit dem Zickzack-Indikator passiert.
 
Mladen Rakic:
Prüfen Sie, was er vor dem von Ihnen gezeigten Code damit gemacht hat. Oder noch besser: entfernen Sie ihn und sehen Sie, was mit dem Zickzack-Indikator passiert

Vielen Dank für Ihre Antwort : )

habe Print(), um den Wert zu überprüfen und auch, wo es verwendet wird, aber war nicht in der Lage, herauszufinden, warum es in diesem Block benötigt.

Ich habe ihn auch entfernt, aber der Indikator funktioniert auch ohne ihn gut.

Ich war neugierig, weil es ist Standard-Indikator kam mit MT5.

war gerade für die zweite Meinung suchen, wenn ich die Existenz der Verwendung in diesem Block von Code missverstanden haben.

 
Hallo, liebe Community-Mitglieder! Ich möchte euch bitten, mir eure Gedanken zu folgender Frage mitzuteilen: Auf welcher Grundlage können wir annehmen (oder besser: mit Gewissheit sagen), dass die Bildung des aktuellen Segments zwischen den extremen Extremen abgeschlossen ist? Ich bin mir der Komplexität dieses Themas durchaus bewusst, daher bin ich für jede Idee dankbar. Und noch eine Frage - wenn der Parameter Tiefe - Mindestanzahl der Kerzen als Intervall zwischen den Extremen (Maxima oder Minima), dann wie kann es passieren, dass der Indikator eine Linie zwischen dem Maximum und Minimum bei dem Wert dieses Parameters 12 zeichnet, aber zur gleichen Zeit zwischen dem Maximum und Minimum - die Anzahl der Kerzen ist weniger als 12?
 
Andrey Kornishkin #:

Wie kann ich die Schlusskurswerte des oberen und unteren Balkens eines Zickzacks im EA-Code erhalten?

Verwenden Sie iCustom(), um die Balken im Diagramm von rechts nach links durchzugehen und nach einem nicht leeren Wert des Indikatorpuffers zu suchen. Hier ist der Balken, nach dem Sie suchen. Sie können jeden beliebigen Candlestick-Preis abrufen.

 

Aleksandr Shirin eine Linie zwischen dem Maximum und dem Minimum bei dem Wert dieses Parameters 12 zieht, aber gleichzeitig zwischen dem Maximum und dem Minimum - die Anzahl der Kerzen weniger als 12 ist?

Es hängt auch von der Anzahl der Punkte ab, die der Preis passiert hat (Parameter ExtDeviation).