und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
Klasse zum Zeichnen des OBV unter Verwendung des Ringbuffers - Indikator für den MetaTrader 5
- Ansichten:
- 788
- Rating:
- Veröffentlicht:
- 2016.05.13 14:22
- Aktualisiert:
- 2016.11.22 07:34
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Beschreibung
Die COBVOnRingBuffer Klasse wurde zur Berechnung des technischen Indikators On Balance Volume (On Balance Volume, OBV) unter Verwendung des Algorithmus des Ringbuffers entworfen.
Deklaration
class COBVOnRingBuffer : public CArrayRing
Titel
#include <IncOnRingBuffer\COBVnRingBuffer.mqh>
Die Datei der COBVOnRingBuffer.mqh Klasse muss in den IncOnRingBuffer Ordner kopiert werden, der in MQL5\Include\ erzeugt werden muss. Zwei Dateien mit Beispielen die von dieser Klasse verwendet werden wurden dieser Beschreibung angehängt. Die Datei mit der Klasse vom Ringbuffer muss auch in diesem Ordner sein.
Klassenmethoden
//--- initialization method: bool Init( // gibt bei Fehler false zurück, bei Erfolg - true int period = 0, // die OBV Periode int size_buffer = 256, // Größe des Ringbuffers bool as_series = false //true bei Zeitreihen, ansonsten false );
Die OBV Periode wird verwendet wie bei IncADOnArray: wenn der Wert 0 ist (Standard), arbeitet der Indikator wie der im Terminal integrierte - er wird für alle Balken des Charts berechnet. Für den Fall, dass ein anderer positiver Wert angegeben wurde, wird diese Anzahl Anzahl von Balken zur Berechnung des Wertes eines jeden Balkens verwendet (Prinzip des gleitenden Durchschnitts).
//--- Methode zur Berechnung basierend auf einer Zeitreihe oder einem Indikatorenbuffer: int MainOnArray( // gibt die Anzahl der verarbeiteten Element zurück const int rates_total, // die Größe des Arrays const int prev_calculated, // verabeitete Elemente im vorherigen Aufruf const double& price[], // price const long& volume[]); // Volumen ); //--- Methode zur Berechnung basierend auf separaten Reihenelementen des Arrays double MainOnValue( // returns the OBV value for the set element (Balken) const int rates_total, // die Größe des Arrays const int prev_calculated, // verarbeitete Element des Arrays const int begin, // von wo die signifikanten Daten des Arrays beginnen const double price, // Preis const long volume, // Volumen const int index // Element (Balken) Index ); //--- Zugriffsmethoden auf die Daten: int BarsRequired(); // Gibt notwendige Zahl von Balken zurück, die zum Zeichnen des Indikators benötigt werden string Name(); // Gibt den Namen des Indikators zurück int Period(); // Gibt die Periode zurück int Size(); // Gibt die Größe des Ringbuffers zurück
Die berechneten Daten des Indikators vom Ringbuffer zu erhalten ist wie bei gewöhnlichen Arrays möglich. Zum Beispiel:
//--- Klasse mit den Methoden für die Berechnung des OBV Indikators: #include <IncOnRingBuffer\COBVOnRingBuffer.mqh> COBVOnRingBuffer obv; ... //+------------------------------------------------------------------+ //| Benutzerdefinierte Indikatoriterationsfunktion | //+------------------------------------------------------------------+ 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[]) { //--- Berechnung des Indikators basierend auf Preiszeitreihen: obv.MainOnArray(rates_total,prev_calculated,close,tick_volume); ... //--- verwende die Daten des "obv" Buffers, // zum Beispiel, kopiere Daten in den Indikatorbuffer: for(int i=start;i<rates_total && !IsStopped();i++) OBV_Buffer[i] = obv[rates_total-1-i]; // Indikatorlinie ... //--- Rückgabewert von prev_calculated für nächsten Aufruf: return(rates_total); }
Beachten Sie, dass die Indexierung für den Ringbuffer die gleiche ist, wie für Zeitreihen.
Beispiele
- Der Indikator berechnet die Test_OBV_OnArrayRB.mq5 Datei auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
- Die Test_OBV_OnValueRB.mq5 Datei demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der OBV Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffers des Indikators der OBV gezeichnet.
Das Ergebnis der Arbeit des Test_OBV_OnArrayRB.mq5 mit der Größe des Ringbuffers von 256 Elementen Bei der Programmierung wurden die Entwicklungen der MetaQuotes Software Corp., Integer und GODZILLA verwendet.
Das Ergebnis der Arbeit des Test_OBV_OnValueRB.mq5 mit der Größe des Ringbuffers von 256 Elementen
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1402
Der 4-color АО Indikator.
Breakout Bars Trend EAExpert Advisor basierend auf dem Breakout Bars Trend v2 Indikator. Abhängig von den Einstellungen wird der Einstieg bei einer Trendumkehr ausgeüfhrt, d.h. nach Überspringen der gesetzten Anzahl von Fehlsignalen.
Der Trendindikator. Die Indikatorlinie auf Level 50 kann als Punkt zur Bestimmung des Trends dienen
SuperSR6Indikator zum Zeichnen möglicher Unterstützungs-/Widerstandslinien auf Fraktale