Beschreibung
Der CFractalsOnRingBuffer ist ein leistungsstarker Indikator zur Berechnung der Fraktale (Fraktale) unter Verwendung des Ringpuffer-Algorithmus (Ringpuffer).
Deklaration
class CFractalsOnRingBufferTitel
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>Die Datei CFractalsOnRingBuffer.mqh muss im Verzeichnis IncOnRingBuffer abgelegt werden, das im MQL5\Include\ Verzeichnis erstellt werden muss. Zwei Beispiel-Dateien, die die Klasse verwenden, sind ebenfalls in der Beschreibung enthalten. Die Datei mit der Klasse des Ringpuffers muss ebenfalls in diesem Ordner platziert werden.
Klassenmethoden
//--- Initialisierungsmethode:bool Init( // gibt false bei Fehler, true bei Erfolg zurück int bars_right = 2, // Anzahl der Balken rechts vom Extremum int bars_left = 2, // Anzahl der Balken links vom Extremum int size_buffer = 256, // Größe des Ringpuffers bool as_series = false // true, wenn Zeitreihe, sonst false );
//--- Berechnungsmethode basierend auf Zeitreihe oder Indikatorpuffern:int MainOnArray( // gibt die Anzahl der bearbeiteten Elemente zurück constint rates_total, // Größe der Arrays constint prev_calculated, // bearbeitete Elemente beim vorherigen Aufruf constdouble& high[], // Array der Höchstwerte constdouble& low[], // Array der Tiefstwerte );
//--- Berechnungsmethode für Fraktale basierend auf Elementen der Hoch-Array:double MainOnHigh( // gibt den Wert des oberen Fraktals für den Index-balken_rechts zurück constint rates_total, // Größe des Arrays constint prev_calculated, // bearbeitete Elemente des Arrays constint begin, // von wo die signifikanten Daten des Arrays anfangen constdouble high, // aktueller Balken Höchstwert constint index // aktueller Element (Balken) Index );
//--- Berechnungsmethode für untere Fraktale basierend auf Elementen der Tief-Array:double MainOnLow( // gibt den Wert des unteren Fraktals für den Index-balken_rechts zurück constint rates_total, // Größe des Arrays constint prev_calculated, // bearbeitete Elemente des Arrays constint begin, // von wo die signifikanten Daten des Arrays anfangen constdouble low, // aktueller Balken Tiefstwert, aktuelles Array-Element Höchstwert constint index // aktueller Element (Balken) Index );
//--- Methoden zum Zugriff auf die Daten:int BarsRequired(); // Gibt die Anzahl der benötigten Balken zum Zeichnen des Indikators zurückstring Name(); // Gibt den Namen des Indikators zurückstring NameUpper() // Gibt den Namen der oberen Fraktale zurückstring NameLower() // Gibt den Namen der unteren Fraktale zurückint BarsRight() // Gibt die Anzahl der Balken rechts vom Extremum zurückint BarsLeft() // Gibt die Anzahl der Balken links vom Extremum zurückint Size(); // Gibt die Größe des Ringpuffers zurück
Um die berechneten Daten des Indikators aus den Ringpuffern zu erhalten, kann man diese wie aus einem gewöhnlichen Array abrufen. Zum Beispiel:
//--- Klasse mit den Berechnungsmethoden des Fraktalindikators:#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+//| Funktion zur Iteration des benutzerdefinierten Indikators |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, constint prev_calculated, constdatetime& time[], constdouble& open[], constdouble& high[], constdouble& low[], constdouble& close[], constlong& tick_volume[], constlong& volume[], constint& spread[]) { //--- Berechnung des Indikators basierend auf der Preisdatenreihe: fractals.MainOnArray(rates_total,prev_calculated,high,low); ... //--- Verwendung der Daten aus den Ringpuffern "fractals",// z.B. Kopieren der Daten in den Indikatorpuffer: for(int i=start;i<rates_total-BarsRight && !IsStopped();i++) { UpperBuffer[i] = fractals.upper[rates_total-1-i]; // obere Fraktale LowerBuffer[i] = fractals.lower[rates_total-1-i]; // untere Fraktale } ... //--- Rückgabewert von prev_calculated für den nächsten Aufruf: return(rates_total); }
Bitte beachten Sie, dass die Indizierung in den Ringpuffern der gleichen wie in der Zeitreihe entspricht.
Beispiele
- Der Indikator berechnet die Datei Test_Fractals_OnArrayRB.mq5 basierend auf der Preiszeitreihe. Die Anwendung der Methode MainOnArray() wird demonstriert.
- Die Datei Test_Fractals_OnValueRB.mq5 zeigt die Verwendung der Methode MainOnValue(). Zuerst wird der Fraktalindikator berechnet und gezeichnet. Dann wird auf Basis dieses Indikators ein weiterer Fraktal gezeichnet.

Das Ergebnis der Arbeit des Test_Fractals_OnArrayRB.mq5 mit einer Ringpuffergröße von 256 Elementen

Das Ergebnis der Arbeit des Test_Fractals_OnValueRB.mq5 mit einer Ringpuffergröße von 256 Elementen
Bei der Programmierung wurden Entwicklungen von MetaQuotes Software Corp., Integer und GODZILLA verwendet.

Kommentar 0