Beschrijving
De CFractalsOnRingBuffer is ontworpen om de Fractals technische indicator te berekenen met behulp van het algoritme van de ringbuffer. Dit maakt het mogelijk om fractals efficiënt te analyseren en toe te passen in jouw handelsstrategieën.
Declaratie
class CFractalsOnRingBufferTitel
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>Het bestand CFractalsOnRingBuffer.mqh moet worden geplaatst in de IncOnRingBuffer map die je moet aanmaken in MQL5\Include\. Twee voorbeeldbestanden die de klasse gebruiken, zijn bijgevoegd. Het bestand met de klasse van de ringbuffer moet ook in deze map staan.
Class methoden
//--- initialisatie methode: bool Init( // retourneert false bij fout, true bij succes int bars_right = 2, // aantal bars rechts van het extremum int bars_left = 2, // aantal bars links van het extremum int size_buffer = 256, // grootte van de ringbuffer bool as_series = false // true indien tijdreeks, anders false );
//--- methode voor berekening op basis van tijdreeks of indicatorbuffers: int MainOnArray( // retourneert aantal verwerkte elementen const int rates_total, // grootte van de arrays const int prev_calculated, // verwerkte elementen van vorige oproep const double& high[], // array van de maximum waarden const double& low[] // array van de minimum waarden );
//--- methode voor berekening van fractal op basis van aparte serie elementen van de array high[] double MainOnHigh( // retourneert waarde van opwaartse fractal voor index-bars_right element const int rates_total, // grootte van de array const int prev_calculated, // verwerkte elementen van de array const int begin, // waar de significante data van de array begint const double high, // huidige bar maximum const int index // huidige element (bar) index );
//--- methode voor berekening van neerwaartse fractal op basis van aparte serie elementen van de array low[] double MainOnLow( // retourneert neerwaartse fractal waarde voor index-bars_right element const int rates_total, // grootte van de array const int prev_calculated, // verwerkte elementen van de array const int begin, // waar de significante data van de array begint const double low, // huidige bar minimum const int index // huidige element (bar) index );
//--- methoden voor toegang tot de data: int BarsRequired(); // retourneert benodigde aantal bars om de indicator te tekenen string Name(); // retourneert de naam van de indicator string NameUpper(); // retourneert de naam van opwaartse fractals string NameLower(); // retourneert de naam van neerwaartse fractals int BarsRight(); // retourneert aantal bars rechts van het extremum int BarsLeft(); // retourneert aantal bars links van het extremum int Size(); // retourneert grootte van de ringbuffer
De berekende data van de indicator kan uit de ringbuffers worden gehaald, net als uit een gewone array. Bijvoorbeeld:
//--- de klasse met de methoden van berekening van de Fractals indicator: #include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh> CFractalsOnRingBuffer fractals; ... //+------------------------------------------------------------------+ //| Aangepaste indicator iteratiefunctie | //+------------------------------------------------------------------+ 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[]) { //--- berekening van de indicator op basis van de prijs tijdreeks: fractals.MainOnArray(rates_total, prev_calculated, high, low); ... //--- gebruik de data uit de ringbuffers "fractals", // bijvoorbeeld, kopieer de data naar de indicatorbuffer: for(int i=start; i < rates_total - BarsRight && !IsStopped(); i++) { UpperBuffer[i] = fractals.upper[rates_total - 1 - i]; // opwaartse fractals LowerBuffer[i] = fractals.lower[rates_total - 1 - i]; // neerwaartse fractals } ... //--- retourneer waarde van prev_calculated voor volgende oproep: return(rates_total); }
Let op: De indexering in de ringbuffers is hetzelfde als in de tijdreeks.
Voorbeelden
- De indicator berekent de Test_Fractals_OnArrayRB.mq5 op basis van de prijs tijdreeks. Het gebruik van de MainOnArray() methode wordt gedemonstreerd.
- Het bestand Test_Fractals_OnValueRB.mq5 demonstreert het gebruik van de MainOnValue() methode. Eerst wordt de Fractals indicator berekend en getekend. Vervolgens wordt er op basis van deze indicator nog een Fractal getekend met de ringbuffer.

Het resultaat van de werking van de Test_Fractals_OnArrayRB.mq5 met de grootte van de ringbuffer van 256 elementen

Het resultaat van de werking van de Test_Fractals_OnValueRB.mq5 met de grootte van de ringbuffer van 256 elementen
Bij het schrijven van de code zijn de ontwikkelingen van MetaQuotes Software Corp., Integer en GODZILLA gebruikt.
Reactie 0