Diskussion zum Artikel "Die Stärke von ZigZag (Teil II). Beispiele für das Empfangen, Verarbeiten und Anzeigen von Daten" - Seite 3

 
lovaK:

...

Aktualisiert:2019.03.12 13:28

Probieren Sie jetzt die neue Version der Bibliothek aus: EasyAndFastGUI - Bibliothek zur Erstellung grafischer Oberflächen

 
Anatoli Kazharski:

Aktualisiert:2019.03.12 13:28

Probieren Sie jetzt die neue Version der Bibliothek aus: EasyAndFastGUI - Bibliothek zur Erstellung grafischer Oberflächen

Bitte fügen Sie alle Dateien in ein Archiv ein. Das reguläre Archiv von Codobase wird nicht aktualisiert, wenn neue Versionen veröffentlicht werden.

 
Andrey Khatimlianskii:

Bitte fügen Sie alle Dateien in einem Archiv zusammen. Das Kodobase-Standardarchiv wird nicht aktualisiert, wenn neue Versionen veröffentlicht werden.

 

ANatoli, gute Arbeit!

Eine Frage ...

Die MultiPercentageSegmentZZ scheint in den angehängten Dateien einen Fehler zu haben. GetZigZagData Funktion von zz_current0, zz_current1, zz_current2 hat keine h_buff,l_buff






Sollte es so sein?

//+------------------------------------------------------------------+
//| Füllen Sie die Indikatorpuffer aus|
//+------------------------------------------------------------------+
void FillIndicatorBuffers(const int i,const int total,const datetime &time[])
  {
   int index=total-i-1;
   int copy_total=1000;
   int h_buff=2,l_buff=3;
   datetime start_time_in =NULL;
   datetime stop_time_in  =NULL;
//--- Abrufen von Quelldaten aus einem höheren Zeitrahmen
   datetime stop_time=time[i]-(PeriodSeconds(HigherTimeframe)*copy_total);
   CopyBuffer(zz_handle_htf,2,time[i],stop_time,h_zz_buffer_temp);
   CopyBuffer(zz_handle_htf,3,time[i],stop_time,l_zz_buffer_temp);
   CopyTime(_Symbol,HigherTimeframe,time[i],stop_time,t_zz_buffer_temp);
//--- Abrufen der endgültigen Daten aus einem höheren Zeitrahmen
   zz_higher_tf.GetZigZagData(h_zz_buffer_temp,l_zz_buffer_temp,t_zz_buffer_temp);
   double htf_value=zz_higher_tf.PercentSumSegmentsDifference();
//--- Erste Segmentdaten
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,0,start_time_in,stop_time_in);
   zz_current0.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- Zweite Segmentdaten
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,1,start_time_in,stop_time_in);
   zz_current1.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- Dritte Segmentdaten
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,2,start_time_in,stop_time_in);
   zz_current2.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- Beim letzten Takt
   if(i<total-1)
     {
      buffer_zz_higher_tf[i] =htf_value;
      buffer_segment_0[i]    =zz_current0.PercentSumSegmentsDifference();
      buffer_segment_1[i]    =zz_current1.PercentSumSegmentsDifference();
      buffer_segment_2[i]    =zz_current2.PercentSumSegmentsDifference();
     }
//--- Zur Geschichte
   else
     {
      //--- Falls es einen neuen Balken des höheren Zeitrahmens gibt
      if(new_bar_time!=t_zz_buffer_temp[0])
        {
         new_bar_time=t_zz_buffer_temp[0];
         //---
         if(i>2)
           {
            int f=1,s=2;
            buffer_zz_higher_tf[i-f] =buffer_zz_higher_tf[i-s];
            buffer_segment_0[i-f]    =buffer_segment_0[i-s];
            buffer_segment_1[i-f]    =buffer_segment_1[i-s];
            buffer_segment_2[i-f]    =buffer_segment_2[i-s];
           }
        }
      else
        {
         buffer_zz_higher_tf[i] =htf_value;
         buffer_segment_0[i]    =zz_current0.PercentSumSegmentsDifference();
         buffer_segment_1[i]    =zz_current1.PercentSumSegmentsDifference();
         buffer_segment_2[i]    =zz_current2.PercentSumSegmentsDifference();
        }
     }
  }
//+------------------------------------------------------------------+
 
Hat jemand ohne Fehler kompiliert?
Dateien:
 
Leider gibt es kein Archiv mit einer voll funktionsfähigen Teil-2-Anwendung. Es gibt nichts zu testen.
 
Eugeni Neumoin #:

Vor mehr als 10 Jahren war ich auch von Zickzacks "fasziniert" und habe eine große Anzahl von ihnen erstellt.

Im Anhang befinden sich Beispiele - Multi-Zigzag für 9 Zeitrahmen und Zigzag Builder, etc. eine kleine Anzahl von Entwicklungen basierend auf Zigzags.

Aber der praktische Sinn ist wichtig. Viel schwerwiegender ist die Aufgabe, die Ektremums zu identifizieren, von denen man sich bei der Analyse "zurückstoßen" kann.

Ein Beispiel:

Wir haben drei Extrema mit Hilfe eines Zickzacks ausgewählt. Wir haben die Andrews-Gabel an sie gebunden. Und wir sehen, dass der Markt vor ein paar Tagen genau die gestrichelte Linie erreicht hat und genau von ihr weggebrochen ist.

Und es gibt eine Menge solcher Bilder. Nicht jedes Extremum, das mit einem Zickzack gefunden wird, kann für diesen Zweck verwendet werden.

In dem Menübild mit den Nummern 0-10 und 12-14 gibt es 14 Zickzack-Algorithmen. Und bei Nummer 11 gibt es 7 weitere Zickzack-Algorithmen zum Finden von Mustern. Insgesamt gibt es 21 Algorithmen.

In der Anlage können Sie viele Algorithmen mit Hilfe des Constructors erstellen. Sie können diese in Ihren eigenen Entwicklungen verwenden.

Und mehr Bilder

Nach unten gehen


Gehen wir noch tiefer und sehen wir uns an, wie das Extremum bei Nummer 1 in der obigen Grafik entstanden ist.

Dies geschieht nicht durch Schleifen der Strahlen und Extrema des Zickzacks. Und auch nicht durch die Berechnung einiger nicht ganz klarer statistischer Muster des Zickzackkurses.

Viel wichtiger ist es, einen Algorithmus zu finden, der signifikante Extrema erkennt.

Kann ich alle diese MZZ9 für MT5 verwenden?