Previous Next

GZigZag

Die Klasse GZigZag bietet die Möglichkeit den ZigZag Indikator auf sehr einfachen Weg zu verwenden.

Einfach die Klasse erzeugen und die Daten werden automatisch ermittelt. Ab dann können die Werte mit der einfachen Angabe der Shift-Verschiebung des gwünschten Zig-Zag ausgelesen werden.


Erzeugen und Zerstören der Klasse

Um die Klasse zu erzeugen und beim beenden zu zerstören, sind 5 einfache Schritte notwendig. Diese Schritte können Sie dem Beispiel entnehmen.

Beispiel:

//--- Einbinden der Glib Klassen
#include <Glib.mqh>

//--- Erzeugung eines Zeigers zu einem leeren Klassenobjektes
GZigZag *zigZag;


int OnInit ()
{
   //--- Die Klasse dem leerem Klassenobjekt zuweisen
   zigZag = gZigZag();

   //--- Die Daten der Klasse initialisieren
   zigZag.Init();

   return(INIT_SUCCEEDED);
}

void OnDeinit (const int reason)
{
   //--- Bei beenden Speicher freigeben
   delete zigZag;
}

Ab diesem Zeitpunkt können Sie die Klassenfunktionen verwenden.

Aufgrund der Menge der Daten die Glib produziert, werden beim Starten ein paar wenige Ticks benötigt bis alle Daten erfasst wurden.

Um zu Überprüfen ob alle Daten vorbereitet wurden und um Fehler beim Start zu vermeiden, empfiehlt es sich die Klassenfunktion .Ready() auf true zu überprüfen.

Beispiel:

void OnTick ()
{
   if ( zigZag.Ready() ) //--- Wird erst ausgeführt wenn alle Daten bereit sind
   {
      //--- Den Preis des vorletzten Extrempunktes ausgeben:
      Print( zigZag.Get(PERIOD_D1, 2).price );
   }
}


Funktionen der Klasse

Rückgabewert

Funktionsaufruf

Funktion

Deinit()

Vordestruktur der Klasse. Zum schonenden entfernen der Klassendaten.

void

Init()

Initialisierung der Klassenvorgabedaten. Stellen Sie ein, mit welchen Vorgaben die Klasse arbeiten soll.

GStructZigZag

Get()

Erhalten Sie ein GStructZigZag Objekt mit den Daten eines vorgegebenen Extrempunktes.

void

GetAll()

Alle Extrempunktobjektdaten in ein GStructZigZag Array schreiben.

void

GetAllLineLengths()

Alle Linienlängen zwischen den Extrempunkten in ein double Array schreiben.

double

GetPrice()

Den Preis eines vorgegebenen Extrempunktes erhalten.

void

GetAllPrices()

Alle Preise der Extrempunkte in ein double Array schreiben.

bool

Ready()

Überprüft ob die Klasse bereit zur Verwendung ist.


Strukturen der Klasse

struct  GStructZigZag
{

   int       shift;   // Verschiebung in Bars
   datetime  date;    // Zeitpunkt des Extrempunktes
   double    price;   // Preis des Extrempunktes
   bool      isZig;   // Extrempunkt Aufwärtsgerichtet (Zig)? Ansonsten Abwärtsgerichtet (Zag).

   long      Volume;  // Volumen des Extrempunktes
   double    RSI;     // RSI Wert des Extrempunktes
   double    MFI;     // MFI Wert des Extrempunktes
   };