Beschrijving
De CStochasticOnRingBuffer klasse is ontworpen voor het berekenen van de technische indicator Stochastic Oscillator (Stochastic Oscillator) met behulp van het algoritme van de ringbuffer.
Declaratie
class CStochasticOnRingBufferTitel
#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>Het bestand CStochasticOnRingBuffer.mqh moet worden geplaatst in de map IncOnRingBuffer die moet worden aangemaakt in MQL5\Include\. Twee voorbeeldbestanden die door de klasse worden gebruikt, zijn aan de beschrijving toegevoegd. Het bestand met de klasse van de ringbuffer en de klasse van Moving Average moeten ook in deze map staan.
Klasse methoden
//--- initialisatiemethode: bool Init(// als er een fout is, retourneert het false, als het succesvol is - true int period_k = 5, // de periode %K int period_d = 3, // de periode %D int period_s = 3, // de periode van vertraging %K ENUM_MA_METHOD method = MODE_SMA, // de methode %D int size_buffer = 256, // de grootte van de ringbuffer, het aantal opgeslagen gegevens bool as_series = false // true, als een tijdreeks, false - als een gebruikelijke indexering van de invoergegevens );
//--- berekeningsmethode op basis van een tijdreeks of indicatorbuffers: 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 maximumwaarde array const double &low[], // de minimumwaarde array const double &close[] // close price array );
//--- berekeningsmethode op basis van de afzonderlijke serie-elementen van de array double MainOnValue(// retourneert de Stochastic waarde voor het ingestelde element const int rates_total, // de grootte van het element const int prev_calculated, // verwerkte elementen van de array const int begin, // van waar de significante gegevens van de array beginnen const double high, // de maximumwaarde const double low, // de minimumwaarde const double close, // close price const int index // het elementindex );
//--- toegangsmethoden tot de gegevens: int BarsRequired(); // Retourneert het benodigde aantal bars om de indicator te tekenen string Name(); // Retourneert de naam van de indicator string NameSignal(); // Retourneert de naam van de signaallijnindicator string Method(); // Retourneert de methode van smoothing in de vorm van de tekstregel int PeriodK(); // Retourneert de periode van %K int PeriodS(); // Retourneert de periode van vertraging %K int PeriodD(); // Retourneert de periode van %D int Size(); // Retourneert de grootte van de ringbuffer
De berekende gegevens van de indicator uit de ringbuffer zijn toegankelijk zoals uit een gewone array. Bijvoorbeeld:
//--- de klasse met de methoden voor het berekenen van de Stochastic indicator: #include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh> CStochasticOnRingBuffer st; ... //+------------------------------------------------------------------+ //| 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: st.MainOnArray(rates_total, prev_calculated, high, low, close); ... //--- gebruik de gegevens van de ringbuffers "st", // bijvoorbeeld, kopieer de gegevens in de indicatorbuffers: for(int i=start; i<rates_total && !IsStopped(); i++) { MainBuffer[i] = st[rates_total - 1 - i]; // de hoofdregel van de indicator SignalBuffer[i] = st.signal[rates_total - 1 - i]; // de signaallijn van de indicator } ... //--- retourneer waarde van prev_calculated voor volgende aanroep: return(rates_total); }
Houd er rekening mee dat de indexering in de ringbuffer hetzelfde is als in de tijdreeks.
Voorbeelden
- Het bestand
Test_Stochastic_OnArrayRB.mq5berekent de indicator op basis van de prijs tijdreeks. Het gebruik van de MainOnArray() methode wordt gedemonstreerd. - Het bestand
Test_Stochastic_OnValueRB.mq5demonstreert het gebruik van de MainOnValue() methode. Eerst wordt de Stochastic Oscillator indicator berekend en getekend. Vervolgens worden op basis van de ringbuffer nog twee Stochastic Oscillator lijnen getekend.

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

Het resultaat van het werk van de Test_Stochastic_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
- Efficiëntie Ratio (ER) Berekenen met de CEROnRingBuffer 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