Beschrijving
De CADXWOnRingBuffer klasse is ontworpen voor het berekenen van de technische indicator Average Directional Movement Index Wilder (Average Directional Movement Index Wilder, ofwel ADX Wilder) met behulp van het ring buffer algoritme. Dit biedt een efficiënte manier om deze indicator te berekenen binnen MetaTrader 5.
Declaratie
class CADXWOnRingBufferTitel
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>Het bestand CADXWOnRingBuffer.mqh moet worden geplaatst in de IncOnRingBuffer map, die je moet aanmaken in MQL5\Include\. Twee voorbeeldbestanden die de klasse gebruiken, zijn aan deze beschrijving toegevoegd. Zorg ervoor dat ook de bestanden van de ring buffer en de Moving Average in deze map staan.
Klasse methoden
//--- initialisatiemethode: bool Init( // als er een fout is, retourneert false, bij succes - true int ma_period = 14, // de periode voor Moving Average smoothing ENUM_MA_METHOD ma_method = MODE_SMMA, // de methode voor Moving Average smoothing int size_buffer = 256, // de grootte van de ring buffer, het aantal opgeslagen data bool as_series = false // true, als het een tijdreeks is, false - als het een gewone indexering van de invoergegevens is );
//--- berekeningsmethode op basis van een tijdreeks of indicator buffers: int MainOnArray( // retourneert het aantal verwerkte elementen const int rates_total, // de grootte van de arrays const int prev_calculated, // verwerkte elementen bij de vorige aanroep const double &high[], // de array met maximale waarden const double &low[], // de array met minimale waarden const double &close[] // de array met slotkoersen );
//--- berekeningsmethode op basis van afzonderlijke elementen van de array double MainOnValue( // retourneert de ADXW waarde voor het ingestelde element const int rates_total, // de 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, // de maximale waarde const double low, // de minimale waarde const double close, // slotprijs const int index // de index van het element );
//--- methoden voor toegang tot de data: int BarsRequired(); // Retourneert het benodigde aantal bars om de indicator te tekenen string NameADXW(); // Retourneert de naam van de indicator string NameNDI(); // Retourneert de naam van de negatieve richting bewegingsindicatorlijn string NamePDI(); // Retourneert de naam van de positieve richting indicatorlijn string MAMethod(); // Retourneert de methode van smoothing in de vorm van een tekstregel int MAPeriod(); // Retourneert de periode van smoothing int Size(); // Retourneert de grootte van de ring buffer
De berekende gegevens van de indicator uit de ring buffer kunnen worden verkregen zoals uit een gewone array. Bijvoorbeeld:
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh> CADXWOnRingBuffer adxw; ... //+------------------------------------------------------------------+ //| 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: adxw.MainOnArray(rates_total, prev_calculated, high, low, close); ... //--- kopieer de gegevens van de "adxw" ring buffers naar de indicator: for(int i=start; i<rates_total; i++) { ADXW_Buffer[i] = adxw[rates_total - 1 - i]; // gemiddelde richtingsindex Wilder PDI_Buffer[i] = adxw.pdi[rates_total - 1 - i]; // positieve richtingsindex NDI_Buffer[i] = adxw.ndi[rates_total - 1 - i]; // negatieve richtingsindex } ... }
Houd er rekening mee dat de indexering in de ring buffer hetzelfde is als in de tijdreeks.
Voorbeelden
- Het Test_ADXW_OnArrayRB.mq5 bestand berekent de indicator op basis van de prijs tijdreeks. De toepassing van de MainOnArray() methode wordt gedemonstreerd.
- Het Test_ADXW_OnValueRB.mq5 bestand toont het gebruik van de MainOnValue() methode. Eerst wordt de ADXW indicator berekend en getekend. Vervolgens worden op basis van de ring buffer van deze indicator drie lijnen van de ADXW indicator berekend.

Het resultaat van de werking van de Test_ADXW_OnArrayRB.mq5 met de grootte van de ring buffer van 256 elementen

Het resultaat van de werking van de Test_ADXW_OnValueRB.mq5 met de grootte van de ring buffer van 256 elementen
Bij het schrijven van de code zijn ontwikkelingen van MetaQuotes Software Corp., Integer en GODZILLA gebruikt.
Gerelateerde berichten
- ADX Berekenen met de Ringbuffer: Een Gids voor MetaTrader 5
- BykovTrend_HTF_Signal: Dé Indicator voor MetaTrader 5 voor Trendanalyse
- Prijs in het Poolse Coördinatensysteem - Indicator voor MetaTrader 5
- Open Range Breakout Indicator voor MetaTrader 5: Ontdek de Kracht van deze Tool
- DEMA Berekenen met de Ringbuffer: Een Handleiding voor MetaTrader 5