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

Ansichten:
791
Rating:
(19)
Veröffentlicht:
2016.05.13 14:20
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 CMomentumOnRingBuffer Klasse wurde zur Berechnung des technischen Indikators Momentum (Momentum)  mit Hilfe des Algorithmus des Ringbuffers entworfen. 

Deklaration

class CMomentumOnRingBuffer : public CArrayRing

Titel

#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>

Die Datei der CMomentumOnRingBuffer.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  period      = 14,   // Periode des Momentum
   int  size_buffer = 256,  // Größe des Ringbuffers
   bool as_series   = false // true bei Zeitreihen, ansonsten false
   );
//--- Methode zur Berechnung basierend auf einer Zeitreihe oder einem Indikatorenbuffer:          
int MainOnArray(                  // gibt die Anzahl der verarbeiteten Element zurück  
   const int     rates_total,     // Größe des Array array[]
   const int     prev_calculated, // verabeitete Elemente im vorherigen Aufruf
   const double& array[],         // Array für die Eingabewerte
   );
//--- Methode zur Berechnung basierend auf separaten Reihenelementen des Arrays           
double MainOnValue(               // gibt den Wert des Momentum 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 long   value,            // Elementwert des Arrays
   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
int                 Period();       // Gibt die Periode 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:

//--- Klasse mit den Methoden für die Berechnung des Momentum Indikators:
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>
CMomentumOnRingBuffer momentum;

...

//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikatoriterationsfunktion                   |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // the size of the array price[]
                 const int prev_calculated,  // verabeitete Elemente im vorherigen Aufruf
                 const int begin,            // von wo die signifikanten Daten des Arrays beginnen
                 const double& price[])      // Array für die Berechnung
  {
//--- Berechnung des Indikators basierend auf Preiszeitreihen:
   momentum.MainOnArray(rates_total,prev_calculated,price);

...
 
//--- verwende Daten des "Momentum" Ringbuffers,
//    zum Beispiel, kopiere Daten in den Indikatorbuffer:
   for(int i=start;i<rates_total && !IsStopped();i++)
      Momentum_Buffer[i] = momentum[rates_total-1-i]; // die Indikatorlinie

...

//--- Rückgabewert von prev_calculated für nächsten Aufruf:
   return(rates_total);
  }

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

Beispiele

  1. Die Test_Momentum_OnArrayRB.mq5 Datei berechnet den Indikatoren auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
  2. Die Test_Momentum_OnValueRB.mq5 Datei demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der Momentum Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffer dieses Indikators ein weiterer Momentum -Indikator gezeichnet. 


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



Das Ergebnis der Arbeit des Test_Momentum_OnValueRB.mq5 mit der Größe des Ringbuffers 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/1396

Klasse zum Zeichnen des MFI unter Verwendung des Ringbuffers Klasse zum Zeichnen des MFI unter Verwendung des Ringbuffers

Die Klasse wurde zur Berechnung des technischen Indikators Money Flow Index (Money Flow Index, MFI) unter Verwendung des Algorithmus des Ringbuffers entwickelt.

TrendEnvelopes TrendEnvelopes

Der typical semaphore Trend Indikator.

Breakout Bars Trend EA Breakout Bars Trend EA

Expert Advisor basierend auf dem Breakout Bars Trend v2 Indikator. Abhängig von den Einstellungen wird der Einstieg bei einer Trendumkehr ausgeüfhrt, d.h. nach Überspringen der gesetzten Anzahl von Fehlsignalen.

Der 4-color АО Indikator Der 4-color АО Indikator

Der 4-color АО Indikator.