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

Die Klasse zum Zeichnen der Fractals mit dem Ringbuffer - Indikator für den MetaTrader 5

Ansichten:
978
Rating:
(24)
Veröffentlicht:
2016.05.16 07:40
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\OnRingBuffer\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Beschreibung

Die Klasse CFractalsOnRingBuffer dient zur Berechnung des technischen Indikators Fractals mit dem Algorithmus des Ringbuffers

Deklaration

class CFractalsOnRingBuffer

Titel

#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>

Die Datei CFractalsOnRingBuffer.mqh muss im Verzeichnis IncOnRingBuffer kopiert werden, der ggf. in MQL5\Include\ erstellt werden muss. Zwei Dateien mit Anwendungsbeispielen dieser Klasse sind beigefügt. Die Datei mit der Klasse des Ringbuffers muss auch in diesen Ordner liegen.

Klassen-Methoden

//--- Initialisierungs-Methode:
bool Init(                      // false im Fehlerfall, true im Erfolgsfall
   int  bars_right  = 2,        // Anzahl der Bars rechts des Extremums
   int  bars_left   = 2,        // Anzahl der Bars links des Extremums
   int  size_buffer = 256,      // Größe des Ringbuffers
   bool as_series   = false     // true, wenn Zeitreihe, sonst false
   );
//--- Methode der Berechnung mittels Zeitreihe oder Indikatorpuffer:          
int MainOnArray(                  // gibt die Anzahl der berechneten Elemente zurück  
   const int     rates_total,     // Größe des Arrays
   const int     prev_calculated, // Anzahl der zuletzt berechneten Elemente
   const double& high[],          // Array der Hochs
   const double& low[],           // Array der Tiefs
   );
//--- Methode der Berechnung der Fraktale basierend auf dem high[]-Array          
double MainOnHigh(               // liefert den Wert des oberen Fraktals der Bar an der Stelle index
   const int    rates_total,     // Größe des Arrays
   const int    prev_calculated, // berechnete Werte des Arrays
   const int    begin,           // Startpunkt der Berechnung
   const double high,            // Das Hoch der aktuellen Bar
   const int    index            // Der Index der aktuellen Bar
   );
//--- Methode der Berechnung der Fraktale basierend auf dem low[]-Array          
double MainOnLow(                // liefert den Wert des unteren Fraktals der Bar an der Stelle index
   const int    rates_total,     // Größe des Arrays
   const int    prev_calculated, // berechnete Werte des Arrays
   const int    begin,           // Startpunkt der Berechnung
   const double low,             //Tief der aktuellen Bar
   const int    index            // Der Index der aktuellen Bar
   );
//--- Methoden des Datenzugriffs:
int    BarsRequired();  // Liefert die notwendige Anzahl der Bars des Indikators
string Name();          // Liefert den Namen des Indikators
string NameUpper()      // Liefert den Namen des oberen Fraktals
string NameLower()      // Liefert den Namen des unteren Fraktals
int    BarsRight()      // Liefert die Anzahl der Bars rechts des Extremums
int    BarsLeft()       // Liefert die Anzahl der Bars links des Extremums
int    Size();          // Liefert die Größe des Ringbuffers

Die berechneten Daten des Indikators erhalten Sie aus dem Ringbuffer wie aus einem Array. Zum Beispiel:

Die Klasse mit den Methoden zur Berechnung des Fraktal-Indikators
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>
CFractalsOnRingBuffer fractals;

...

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 einer Zeitreihe:
   fractals.MainOnArray(rates_total,prev_calculated,high,low);

...

//--- use the data from the ring buffers "fractals",
//    zum Beispiel, kopieren Sie die Daten in den Indikator-Buffer:
   for(int i=start;i<rates_total-BarsRight && !IsStopped();i++)
     {
      UpperBuffer[i] = fractals.upper[rates_total-1-i]; // up fractals
      LowerBuffer[i] = fractals.lower[rates_total-1-i]; // down fractals
     }

...

//--- Rückgabe des neuen Wertes für prev_calculated für den nächsten Aufruf:
   return(rates_total);
  }

Bitte beachten Sie, die Indizierung des Ringbuffers ist genau gleich der von Zeitreihen.

Beispiele

  1. Datei Test_Fractals_OnArrayRB.mq5 - der Indikator rechnet auf der Basis der Preis-Zeitreihen. Es zeigt die Verwendung der Methode MainOnArray()
  2. Datei Test_Fractals_OnValueRB.mq5 zeigt die Verwendung der Methode MainOnValue(). Zunächst wird der Indikator Fractals berechnet und gezeichnet. Dann wird auf dieser Grundlage des Ringbuffers des Indikators der Wert des nächsten Fraktals berechnet wird. 


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



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

 

Für das Programm wurden Elemente von MetaQuotes Software Corp.Integer und GODZILLA verwendet.

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

SuperWoodiesCCI SuperWoodiesCCI

Der Indikator setzt die Handelsstrategie mit dem CCI um

Predict Predict

Eine Signal-Indikator mit drei Varianten

PriceChannel Signal PriceChannel Signal

Dieser Indikator ist Igorads berühmter Indikator nämlich sein PriceChannel_Signal_v1 mit Wiedereinstiegsfunktion.

Exp_TrendEnvelopes Exp_TrendEnvelopes

Der Expert Advisor auf Basis der Signale des TrendEnvelopes Indikators