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 OsCD unter Verwendung des Ringbuffers - Indikator für den MetaTrader 5
- Ansichten:
- 677
- Rating:
- Veröffentlicht:
- 2016.05.13 14:07
- 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
Diese Klasse wurde zur Berechnung des technischen Indikators Moving Average of Oszillator (Moving Average of Oszillator, OsMA) mit Hilfe des Algorithmus des Ringbuffers entworfen.
Deklaration
class COsMAOnRingBuffer : public CArrayRing
Titel
#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>
Die Datei der COsMAOnRingBuffer.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 Dateien mit den Ringbuffer, dem MACD und Moving Average Klassen sollten sich auch in diesem Ordner befinden.
Klassenmethoden
//--- initialization method: bool Init( // false bei Fehler, bei Erfolg true int fast_period = 12, // Periode des Glättung des Moving Average int slow_period = 26, // Periode des Glättung des langsamen Moving Average int signal_period = 9, // Periode der Glättung der Signallinie des Moving Average ENUM_MA_METHOD fast_method = MODE_EMA, // Methode der Glättung des schnellen Moving Average ENUM_MA_METHOD slow_method = MODE_EMA, // Methode der Glättung des langsamen Moving Average ENUM_MA_METHOD signal_method = MODE_SMA, // Methode der Glättung der Signalelinie des Moving Average int size_buffer = 256, // Größe des Ringbuffers, Anzahl der gespeicherten Daten bool as_series = false // true bei Zeitreihen, false wenn die übliche Indexierung ein Eingabedaten angewendet werden soll ); //--- Methode zur Berechnung basierend auf einer Zeitreihe oder einem Indikatorenbuffer: int MainOnArray( // gibt die Anzahl der verarbeiteten Element zurück const int rates_total, // Größe des Array array[] const int prev_calculated, // verabeitete Elemente im vorherigen Aufruf const double &array[] // Array für die Eingabewerte ); //--- Methode zur Berechnung basierend auf separaten Reihenelementen des Arrays double MainOnValue( // gibt den OsMA Wert für das Mengenelement zurück 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 value, // signifikante Elemente des Arrays const int index // der Elementindex ); //--- Zugriffsmethoden auf die Daten: int BarsRequired(); // Gibt notwendige Zahl von Balken zurück, die zum Zeichnen des Indikators benötigt werden string Name() // Returns the name of the Indikator string FastMethod() // Gibt die Glättungsmethode der schnellen Linie in Form einer Textzeile zurück string SlowMethod() // Gibt die Glättungsmethode der langsamen Linie in Form einer Textzeile zurück string SignalMethod() // Gibt die Glättungsmethode der Signallinie in Form einer Textzeile zurück int FastPeriod() // Gibt die Periode für die Glättung der schnellen Linie zurück int SlowPeriod() // Gibt die Periode für die Glättung der langsamen Linie zurück int SignalPeriod() // Gibt die Periode für die Glättung der Signallinie 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 OsMA Indikators:: #include <IncOnRingBuffer\COsMAOnRingBuffer.mqh> COsMAOnRingBuffer osma; ... //+------------------------------------------------------------------+ //| Benutzerdefinierte Indikatoriterationsfunktion | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- Berechnung des Indikators basierend auf Preiszeitreihen: osma.MainOnArray(rates_total,prev_calculated,price); ... //--- verwende Daten des "osma" Ringbuffers, // kopiere Daten in den Indikatorbuffer: for(int i=start;i<rates_total;i++) OsMABuffer[i]=osma[rates_total-1-i]; // Indikatorhistogramm //--- 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
- Die Datei Test_OsMA_OnArrayRB.mq5 berechnet den Indikator auf Basis der Preiszeitreihe. Die Anwendung der MainOnArray() Methode wird demonstriert
- Die Datei Test_OsMA_OnValueRB.mq5 demonstriert die Verwendung der MainOnValue() Methode. Zuerst wird der OsMA Indikator berechnet und gezeichnet. Dann wird auf Basis des Ringbuffer dieses Indikators ein weiterer OsMA -Indikator gezeichnet.
Das Ergebnis der Arbeit des Test_OsMA_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_OsMA_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/1367
Das Exp_VininI_Trend_LRMA Handelssystem basiert auf Änderung der Trendrichtung die durch den VininI_Trend_LRMA Indikator angezeigt wird.
Exp_VininI_TrendDas Exp_VininI_Trend Handelssystem basiert auf durch den VininI_Trend Indikator angezeigten Änderungen der Trendrichtung.
Der dynamische Unterstützungs-/Widerstandsindikator für MetaTrader
Schnick [Support Vector Machine Learning Tool Tester]Dieses Skript versucht die Macht von Stützvektormaschine beim Lösen von Klassifizierungsproblemen zu demonstrieren.