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 ATR unter Verwendung des Ringbuffers - Indikator für den MetaTrader 5

Ansichten:
894
Rating:
(22)
Veröffentlicht:
2016.05.13 13:46
\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 CATROnRingBuffer Klasse wurde zur Berechnung des Average True Range Indikator (Average True Range, ATR) unter Vernwendung des Algorithmus des Ringbuffers entwickelt. 

Deklaration

class CATROnRingBuffer

Titel

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>

Die Datei der CATROnRingBuffer.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 bei Fehler false zurück, bei Erfolg - true
   int            ma_period   = 14,       // Periode des Glättung des Moving Average
   ENUM_MA_METHOD ma_method   = MODE_SMA, // Methode des Moving Average
   int            size_buffer = 256,      // die Ringbuffergröße, Anzahl der gespeicherten Daten
   bool           as_series   = false     // true bei einer Zeitreihe, false wenn für die Eingabendaten ein normaler Index verwendt wird
   );             
//--- 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 basierend auf Zeitreiheneleenten im Array:           
double MainOnValue(              // gibt den ATR Wert für das Mengenelement zurück
   const int    rates_total,     // die Größe des Arrays
   const int    prev_calculated, // verarbeitete Element des Arrays
   const int    begin,           // von wo die signifikanten Werte 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 Name();           // Gibt den Namen des Indikators 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\CATROnRingBuffer.mqh>
CATROnRingBuffer atr;

...

//+------------------------------------------------------------------+
//| 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:
   atr.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...

//--- kopiert die Daten vom "atr" Ringbuffer in den Indikator::  
   for(int i=start;i<rates_total;i++)
     {
      ATR_Buffer[i]=atr[rates_total-1-i];
     }
   return(rates_total);
  }

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

Beispiele

  1. Die Test_ATR_OnArrayRB.mq5 Datei berechnet den Indikatoren auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
  2. Die Test_ATR_OnValueRB.mq5 Datei demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der ATR Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffer dieses Indikators eine weiter Linie des ATR Indikator berechnet. . 


Das Ergebnis der Arbeit des Test_ATR_OnArrayRB.mq5 mit der Größe des Ringbuffer von 256 Elementen



Das Ergebnis der Arbeit des Test_ATR_OnValueRB.mq5 mit der Größe des Ringbuffer 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/1344

Klasse zum Zeichnen des ADX unter Verwendung des Ringbuffers Klasse zum Zeichnen des ADX unter Verwendung des Ringbuffers

Die Klasse wurde zur Berechnung des technischen Indikators Average Directional Movement Index (Average Directional Movement Index, ADX) unter Verwendung des Algorithmus des Ringbuffers entwickelt.

Klasse zum Zeichnen des gleitenden Durchschnitts unter Verwendung es Ringbuffers Klasse zum Zeichnen des gleitenden Durchschnitts unter Verwendung es Ringbuffers

Diese Klasse wurde zur Berechnung des Gleitenden Durchschnitt (Moving Average) mit Hilfe des Algorithmus des Ringbuffers entworfen.

Anzeige mehrerer ChartObjekt-Objekte in einem einzelnen Fenster Anzeige mehrerer ChartObjekt-Objekte in einem einzelnen Fenster

Dieses Skript zeigt mehrere Subcharts - abhänging von der Anzahl der Währungspaare im Marktübersichtfenster - in einem einzigen Chartfenster an.

ytg_Trend ytg_Trend

Der Trendindikator, der mögliche Rücksetzer anzeigt