Beschrijving
De CEROnRingBuffer klasse is speciaal ontworpen om de technische indicator Efficiëntie Ratio (ER) te berekenen. Deze indicator wordt gebruikt in de Adaptieve Bewegende Gemiddelde (Adaptive Moving Average, AMA) met behulp van het algoritme van de ringbuffer.
Declaratie
class CEROnRingBuffer : public CArrayRing
Titel
#include <IncOnRingBuffer\CEROnRingBuffer.mqh>Het bestand van de CEROnRingBuffer.mqh klasse moet in de IncOnRingBuffer map worden geplaatst, die je moet aanmaken in MQL5\Include\. Twee voorbeeldbestanden die de klasse gebruiken, zijn bijgevoegd in de beschrijving. Het bestand van de ringbuffer moet ook in deze map staan.
Klasse methoden
//--- initialisatiemethode: bool Init( // als er een fout is, retourneert het false; als het succesvol is - true int periode = 34, // de periode voor de berekening van de ER int grootte_buffer = 256, // de grootte van de ringbuffer, het aantal opgeslagen gegevens bool als_reeks = false // true, als een tijdreeks; false - als een gewone indexering van de invoergegevens );
//--- de methode voor berekening op basis van een tijdreeks of indicatorbuffer: int MainOnArray( // retourneert het aantal verwerkte elementen const int totaal_aantal, // de grootte van de array array[] const int eerder_berekend, // verwerkte elementen bij de vorige aanroep const double &array[] // de array van de invoerwaarden );
//--- de methode voor berekening op basis van de afzonderlijke serie-elementen van de array double MainOnValue( // retourneert de ER-waarde voor het opgegeven element const int totaal_aantal, // de grootte van de array const int eerder_berekend, // verwerkte elementen van de array const int begin, // vanaf waar de significante gegevens van de array beginnen const double waarde, // de elementwaarde van de array const int index // de elementindex );
//--- de methoden voor toegang tot de gegevens: int BarsRequired(); // Retourneert het noodzakelijke aantal bars om de indicator te tekenen string Name() // Retourneert de naam van de indicator int Period() // Retourneert de periode van de ER-berekening int Grootte(); // Retourneert de grootte van de ringbuffer
Je kunt de berekende gegevens van de indicator uit de ringbuffer halen, net zoals uit een gewone array. Bijvoorbeeld:
//--- de klasse met de methoden voor de berekening van de ER-indicator: #include <IncOnRingBuffer\CEROnRingBuffer.mqh> CEROnRingBuffer er; ... //+------------------------------------------------------------------+ //| Aangepaste indicator iteratiefunctie | //+------------------------------------------------------------------+ int OnCalculate(const int totaal_aantal, const int eerder_berekend, const int begin, const double &prijs[]) { //--- berekening van de indicator op basis van prijs tijdreeksen: er.MainOnArray(totaal_aantal, eerder_berekend, prijs); ... //--- gebruik gegevens van de ringbuffer "er", // bijvoorbeeld, kopieer gegevens in de indicatorbuffers: for(int i=start;i<totaal_aantal;i++) { ER_Buffer[i] = er[totaal_aantal-1-i]; // indicatorlijn } //--- retourneer waarde van eerder_berekend voor volgende aanroep: return(totaal_aantal); }
Let op dat de indexering in de ringbuffer hetzelfde is als in de tijdreeks.
Voorbeelden
- Het Test_ER_OnArrayRB.mq5 bestand berekent de indicator op basis van prijs tijdreeksen. De toepassing van de MainOnArray() methode wordt gedemonstreerd.
- Het Test_ER_OnValueRB.mq5 laat het gebruik van de MainOnValue() methode zien. Eerst wordt de ER-indicator berekend en getekend. Daarna wordt op basis van de ringbuffer van deze indicator nog een ER getekend.

Het resultaat van het werk van de Test_ER_OnArrayRB.mq5 met de grootte van de ringbuffer van 256 elementen

De resultaten van het werk van de Test_ER_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.
Gerelateerde berichten
- PCA Synthetics: Automatische Coëfficiëntselectie voor MetaTrader 5
- iExposure Indicator: Beheer je Handelsposities Efficiënt met MetaTrader 5
- Efficiënt Grafische Objecten Kopiëren in MetaTrader 5 met ChartObjectsCopyPaste
- Verbeter je Handelsstrategieën met de ColorXADX Indicator voor MetaTrader 5
- Correlatiecoëfficiënt: Een Onmisbare Indicator voor MetaTrader 5