Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
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 gleitenden Durchschnitts unter Verwendung es Ringbuffers - Indikator für den MetaTrader 5

Ansichten:
878
Rating:
(22)
Veröffentlicht:
2016.05.13 13:45
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

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

Deklaration

class CMAOnRingBuffer :public CArrayRing

Titel

#include <IncOnRingBuffer\CMAOnRingBuffer.mqh>

Die Datei der CMAOnRingBuffer.mqh Klasse muss in den IncOnRingBuffer Ordner kopiert werden, der in MQL5\Include\ erzeugt werden muss. Zwei Dateien mit Beispielen die von dieser Klasse verwendet werden wurden dieser Beschreibung angehängt. Die Datei mit der Klasse vom Ringbuffer muss auch in diesem Ordner sein.

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 der Glättung 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 einer Zeitreihe oder einem Indikatorenbuffer:          
int MainOnArray(                  // gibt Anzahl der verarbeiteten Elemente des Array zurück  
   const int     rates_total,     // Größe des Array array[]
   const int     prev_calculated, // verarbeitete Elemente des Array im vorherigen Aufruf
   const double &array[]          // Array für die Berechnung
   );

//--- Methode zur Berechnung basierend auf einzelnen Elementen eines Arrays           
double MainOnValue(              // gibt MA Wert für die Elementmente zurück
   const int    rates_total,     // die Größe von dem Array
   const int    prev_calculated, // verarbeitete Elemente im Array
   const int    begin,           // von wo die signifikanten Daten des Arrays beginnen
   const double value,           // der Array-Elementwert
   const int    index            // der Array-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

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

#include <IncOnRingBuffer\CMAOnRingBuffer.mqh>
CMAOnRingBuffer ma;
...
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikatoriterationsfunktion                   |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- Berechnung des Indikators:
   ma.MainOnArray(rates_total,prev_calculated,price);

...
     
//--- Daten vom "ma" Ringbuffer in den Indikator kopieren:  
   for(int i=start;i<rates_total;i++)
     {
      MA_Buffer[i]=ma[rates_total-1-i];
     }
   return(rates_total);
  }

Beachten Sie, dass die Indexierung des Ringbuffers die gleiche ist, wie bei Zeitreihen.

Beispiele

  1. Der Indikator berechnet die Test_MA_OnArrayRB.mq5 Datei auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert 
  2. Die Datei Test_MA_OnValueRB.mq5 demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der MA Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffer dieses Indikators ein weiterer MA-Indikator berechnet. 


Das Ergebnis der Arbeit des Test_MA_OnArrayRB.mq5 mit der Größe des Ringbuffers von 256 Elementen



Das Ergebnis der Arbeit des Test_MA_OnValueRB.mq5 mit der Größe des Ringbuffers von 256 EDlementen

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/1342

CorrectedAverage CorrectedAverage

Der Indikator zeigt die Ausbruchslinie

Klasse um einen Ringbuffer zu erstellen Klasse um einen Ringbuffer zu erstellen

Die Klasse ermöglicht, Mini Zeitreihen, Indikatorenminibuffer, kurzfristige Buffer so zu organisierten, dass sie Zwischendaten innerhalb des Expert Advisors oder Indikators speichern können.

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 ATR unter Verwendung des Ringbuffers Klasse zum Zeichnen des ATR unter Verwendung des Ringbuffers

Die Klasse wurde zur Berechnung des Average True Range Indikator (Average True Range, ATR) unter Verwendung des Algorithmus des Ringbuffers entwickelt.