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

Ansichten:
707
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 CMFIOnRingBuffer Klasse wurde zur Berechnung des technischen Indikators Money Flow Index (Money Flow Index, MFI) unter Verwendung des Algorithmus des Ringbuffers entwickelt. 

Deklaration

class CMFIOnRingBuffer : public CArrayRing

Titel

#include <IncOnRingBuffer\CMFIOnRingBuffer.mqh>

Die Datei der CMFIOnRingBuffer.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 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                 period         = 14,            // Periode des MFI
   ENUM_MA_METHOD      method         = MODE_SMA,      // Glättungsmethode  
   ENUM_APPLIED_PRICE  applied_price  = PRICE_TYPICAL, // Preiskonstante auf der die Indikator Berechnung durchgeführt wird
   ENUM_APPLIED_VOLUME applied_volume = VOLUME_TICK,   // Volumen für die Berechnung
   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,     // die Größe des Arrays
   const int     prev_calculated, // verabeitete Elemente im vorherigen Aufruf
   const double& open[],          // Eröffnungspreise
   const double& high[],          // Hochpreise
   const double& low[],           // Tiefpreises
   const double& close[],         // Schlusspreise
   const long&   tick_volume[],   // Tickvolumen
   const long&   volume[]);       // Aktienvolumen
   );
//--- Methode zur Berechnung auf Basis von einzelnen Reihenelementen des Arrays           
double MainOnValue(              // gibt den MFI Wert für das Mengenelement (Balken) 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 Daten des Arrays beginnen
   const double open,            // Eröffnungspreis des Balken
   const double high,            // Höchstpreis des Balken
   const double low,             // Tiefpreis des Balken
   const double close,           // Schlusspreis des Balken
   const long   tick_volume,     // Tickvolumen des Balken
   const long   volume,          // Aktienvolumen des Balken
   const int    index            // Element (Balken) Index
   );
//--- 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 
string              Method();       // Gibt die Methode in Form einer Textzeile zurück 
ENUM_APPLIED_PRICE  Price();        // Gibt den Typ des zu verwendenden Preises zurück
ENUM_APPLIED_VOLUME Volume();       // Gibt den Typ des zu verwendenden Volumens 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 MFI Indikators:
#include <IncOnRingBuffer\CMFIOnRingBuffer.mqh>
CMFIOnRingBuffer mfi;

...

//+------------------------------------------------------------------+
//| 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 basierend auf Preiszeitreihen:
   mfi.MainOnArray(rates_total,prev_calculated,open,high,low,close,tick_volume,volume);

...

//--- verwende Daten des "mfi" Ringbuffers,
//    zum Beispiel, kopiere Daten in den Indikatorbuffer:
   for(int i=start;i<rates_total && !IsStopped();i++)
      MFI_Buffer[i] = mfi[rates_total-1-i]; // 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 Datei Test_MFI_OnArrayRB.mq5 berechnet den Indikator auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
  2. Die Test_MFI_OnValueRB.mq5 Datei demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der MFI Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffer dieses Indikators ein weiterer MFI -Indikator gezeichnet. 


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



Das Ergebnis der Arbeit des Test_MFI_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/1395

TrendEnvelopes TrendEnvelopes

Der typical semaphore Trend Indikator.

ytg_Fractals_Price ytg_Fractals_Price

Indikator für fraktale Preislevel

Klasse zum Zeichnen des Momentum unter Verwendung des Ringbuffers Klasse zum Zeichnen des Momentum unter Verwendung des Ringbuffers

Diese Klasse wurde zur Berechnung des technischen Indikators Momentum (Momentum) mit Hilfe des Algorithmus des Ringbuffers entworfen.

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.