Startseite Technischer Indikator Beitrag

ADX Wilder mit Ringpuffer: Ein Leitfaden für MetaTrader 5

Anhang
1356.zip (10.07 KB, Herunterladen 0 mal)

Beschreibung

Die Klasse CADXWOnRingBuffer wurde zur Berechnung des technischen Indikators Average Directional Movement Index Wilder (ADX Wilder) unter Verwendung des Ringpuffer-Algorithmus entwickelt. Diese Klasse ermöglicht es, die Berechnung effizient und schnell durchzuführen.

Deklaration

class CADXWOnRingBuffer

Titel

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>

Die Datei CADXWOnRingBuffer.mqh sollte im Ordner IncOnRingBuffer abgelegt werden, der im Pfad MQL5\Include\ angelegt werden muss. Zwei Beispiel-Dateien, die von dieser Klasse verwendet werden, sind der Beschreibung angehängt. Dateien mit der Klasse des Ringpuffers sowie der Klasse des Gleitenden Durchschnitts müssen ebenfalls in diesem Ordner vorhanden sein.

Methoden der Klasse

//--- Initialisierungsmethode: bool Init( // gibt bei Fehler false zurück, bei Erfolg true int ma_period = 14, // die Periode für die Glättung des Gleitenden Durchschnitts ENUM_MA_METHOD ma_method = MODE_SMMA, // die Methode der Glättung des Gleitenden Durchschnitts int size_buffer = 256, // die Größe des Ringpuffers, Anzahl der gespeicherten Daten bool as_series = false // true, wenn eine Zeitreihe, false - bei üblicher Indizierung der Eingabedaten );
//--- Berechnungsmethode basierend auf einer Zeitreihe oder Indikator-Puffern: int MainOnArray( // gibt die Anzahl der verarbeiteten Elemente zurück const int rates_total, // die Größe der Arrays const int prev_calculated, // verarbeitete Elemente beim vorherigen Aufruf const double &high[], // das Maximum-Werte-Array const double &low[], // das Minimum-Werte-Array const double &close[] // das Schlusskurs-Array );
//--- Berechnungsmethode auf Basis der einzelnen Elemente der Array-Serie double MainOnValue( // gibt den ADXW-Wert für das festgelegte Element zurück const int rates_total, // die Größe des Arrays const int prev_calculated, // verarbeitete Elemente des Arrays const int begin, // ab wo die signifikanten Daten des Arrays beginnen const double high, // das Maximum const double low, // das Minimum const double close, // Schlusskurs const int index // der Elementindex );
//--- Methoden zum Zugriff auf die Daten: int BarsRequired(); // Gibt die notwendige Anzahl der Bars zur Darstellung des Indikators zurück string NameADXW(); // Gibt den Namen des Indikators zurück string NameNDI(); // Gibt den Namen der negativen Bewegungsrichtung des Indikators zurück string NamePDI(); // Gibt den Namen des positiven Bewegungsrichtungsindicators zurück string MAMethod(); // Gibt die Methode der Glättung als Textzeile zurück int MAPeriod(); // Gibt die Glättungsperiode zurück int Size(); // Gibt die Größe des Ringpuffers zurück

Die abgerufenen Daten des Indikators aus dem Ringpuffer können wie aus einem üblichen Array entnommen werden. Zum Beispiel:

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh> CADXWOnRingBuffer adxw; ... //+------------------------------------------------------------------+ //| Benutzerdefinierte Indikator-Funktionsiteration | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { //--- Berechnung des Indikators: adxw.MainOnArray(rates_total,prev_calculated,high,low,close); ... //--- Kopieren der Daten aus den "adxw"-Ringpuffern in den Indikator: for(int i=start;i<rates_total;i++) { ADXW_Buffer[i] = adxw[rates_total-1-i]; // durchschnittlicher Bewegungsindex Wilder PDI_Buffer[i]  = adxw.pdi[rates_total-1-i]; // positiver Bewegungsindex NDI_Buffer[i]  = adxw.ndi[rates_total-1-i]; // negativer Bewegungsindex } ... }

Bitte beachten Sie, dass die Indizierung im Ringpuffer der gleichen wie in der Zeitreihe entspricht.

Beispiele

  • Die Datei Test_ADXW_OnArrayRB.mq5 berechnet den Indikator basierend auf der Preisdatenreihe. Die Anwendung der Methode MainOnArray() wird demonstriert.
  • Die Datei Test_ADXW_OnValueRB.mq5 zeigt die Nutzung der Methode MainOnValue(). Zuerst wird der ADXW-Indikator berechnet und dargestellt. Anschließend werden auf Basis des Ringpuffers dieses Indikators drei Linien des ADXW-Indikators berechnet.


Das Ergebnis der Ausführung von Test_ADXW_OnArrayRB.mq5 mit einer Ringpuffergröße von 256 Elementen



Das Ergebnis der Ausführung von Test_ADXW_OnValueRB.mq5 mit einer Ringpuffergröße von 256 Elementen

 

Bei der Erstellung des Codes wurden die Entwicklungen von MetaQuotes Software Corp., Integer und GODZILLA verwendet.

Verwandte Beiträge

Kommentar (0)