Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Indikatoren

Klasse zum Zeichnen des ADX Wilder mit Hilfe des Ringbuffers - Indikator für den MetaTrader 5

Ansichten:
880
Rating:
(21)
Veröffentlicht:
2016.05.13 13:53
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\IncOnRingBuffer\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Beschreibung

Die Klasse wurde für die Berechnung des technischen Indikators Average Directional Movement Index Wilder (Average Directional Movement Index Wilder, ADX Wilder) unter Verwendung des Algorithmus für den Ringbuffer entworfen.   

Deklaration

class CADXWOnRingBuffer

Titel

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>

Die Datei der CADXOnRingBuffer.mqh Klasse sollte in den Ordner IncOnRingBuffer der in MQL5\Include\ erstellt werden muss kopiert werden. Zwei Dateien mit Beispielen die von dieser Klasse verwendet werden wurden dieser Beschreibung angehängt. Die Datei mit der Klasse des Ringbuffers und die Klasse des Moving Average müssen sich auch in diesem Ordner befinden.

Klassenmethoden

//--- initialization method:
bool Init(                                 // gibt false bei Fehler zurück, bei Erfolg - true
   int            ma_period   = 14,        // Periode für Glättung des gleitenden Durchschnittsw
   ENUM_MA_METHOD ma_method   = MODE_SMMA, // Methode der Glättung des gleitenden Durchschnitts
   int            size_buffer = 256,       // Größe des Ringbuffers, Anzahl der gespeicherten Daten
   bool           as_series   = false      // true bei Zeitreihen, false wenn die übliche Indexierung ein Eingabedaten angewendet werden soll
   );             
//--- Methode zur Berechnung basierend auf Zeitreihen oder Indikatorenbuffers:          
int MainOnArray(                  // gibt die Anzahl der verarbeiteten Element zurück  
   const int     rates_total,     // die Größe des Arrays
   const int     prev_calculated, // verabeitete Elemente im vorherigen Aufruf
   const double &high[]           // Maximalwert Array
   const double &low[]            // Minimalwert Array
   const double &close[]          // Schlusspreis Array
   );
//--- Methode zur Berechnung auf Basis von einzelnen Reihenelementen des Arrays           
double MainOnValue(              // gibt den ADXW Wert für das Mengenelement zurück
   const int    rates_total,     // die Größe des Arrays
   const int    prev_calculated, // Elemente des Arrays verarbeitet
   const int    begin,           // von wo die signifikanten Daten des Arrays beginnen
   const double high,            // der Maximalwert 
   const double low,             // der Minimlalwert 
   const double close,           // Schlusspreis 
   const int    index            // der Elementindex
   );
//--- Zugriffsmethoden auf die Daten:
int    BarsRequired();   // Gibt notwendige Zahl von Balken zurück, die zum Zeichnen des Indikators benötigt werden
string NameADXW();       // gibt den Namen des Indikators zurück
string NameNDI();        // gibt den Namen der negativen Directional Movement Indikatorlinie zurück 
string NamePDI();        // gibt den Namen der positiven Directional Movement Indikatorlinie zurück
string MAMethod();       // Gibt die Glättungsmethode in Form einer Textzeile zurück  
int    MAPeriod();       // Gibt die Periode für die Glättung zurück
int    Size();           // Gibt die Größe des Ringbuffers zurück

Die berechneten Daten des Indikators vom Ringbuffer zu erhalten ist wie bei gewöhnlichen Arrays möglich. Zum Beispiel:

#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
CADXWOnRingBuffer adxw;

...

//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikatoriterationsfunktion                   |
//+------------------------------------------------------------------+
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);

   ...
     
//--- kopiere Daten des "adxw" Ringbuffersn in den Indikator:
   for(int i=start;i<rates_total;i++)
     {
      ADXW_Buffer[i] = adxw[rates_total-1-i];      // Average Directional Movement Index Wilder
      PDI_Buffer[i]  = adxw.pdi[rates_total-1-i];  // positiver Directional Index
      NDI_Buffer[i]  = adxw.ndi[rates_total-1-i];  // negativer Directional Index
     }

   ...
  }

Beachten Sie, dass die Indexierung für den Ringbuffer die gleiche ist, wie für Zeitreihen.

Beispiele

  1. Die Datei Test_ADXW_OnArrayRB.mq5 berechnet den Indikator auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
  2. Die Datei Test_ADXW_OnValueRB.mq5 demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der ADXW Indikator berechnet und gezeichnet. Dann werden auf Basis des Ringbuffers dieses Indikators drei Linien des ADXW Indikators berechnet. 


Das Ergebnis der Arbeit des  Test_ADXW_OnArrayRB.mq5 mit einer gesetzten Ringbuffergröße von 256 Elementen



Das Ergebnis der Arbeit des Test_ADXW_OnValueRB.mq5 mit einer gesetzten Ringbuffergröße von 256 Elementen

 

Bei der Programmierung wurden die Entwicklungen der MetaQuotes Software Corp.Integer und GODZILLA verwendet.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1356

Exp_ColorTrend_CF Exp_ColorTrend_CF

Das Exp_ColorTrend_CF Handelssystem basiert auf Änderung der Trendrichtung, die durch den ColorTrend_CF Indikator angezeigt wird

Exp_ColorLeManTrend Exp_ColorLeManTrend

Das Exp_ColorLeManTrend Handelssystem basiert auf den Änderungen der Trendrichtung, die durch den ColorLeManTrend Indikator angezeigt wird

Pivot Points to Html Pivot Points to Html

Dieses Skript berechnet Pivotpunkte für alle Symbole der Marktübersicht und zeigt die Ergebnisse in einer HTML-Datei an.

VininI_Trend VininI_Trend

Ein Trend Indikator der seine Werte von den Signalen der Gruppe von gleitenden Durchschnitten, deren Periode sich in einer arithmetischen Reihe ändern, ableitet.