Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Vereinfachte Klasse des CArrayRing256 Ringbuffers - Bibliothek für den MetaTrader 5

Ansichten:
626
Rating:
(30)
Veröffentlicht:
2016.05.13 14:13
\MQL5\Include\IncOnRingBuffer\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Beschreibung

Diese Klasse ist die vereinfachte Version der CArrayRing Klasse: sie hat eine vorgegebene fixe Größe von 256 Elementen, sie ist schneller und erlaubt Minizeitreihen, Minibuffer, kurze Buffer zu organisieren um Datenstörme sofort innerhalb des Expert Advisors oder Indikators zu speichern. 

Vereinfachung basierend auf der Eigenschaft der uchar-Variable, die im Arrayindex verwendet wird. Zum Beispiel im Code

double array[UCHAR_MAX+1];  // Ringbufferdaten
uchar  index=0;             // Bufferelementindex

while(!IsStopped())
  {
   array[++index];          // gehe zum nächsten Element des Buffers
   ...
  }

Der Arrayindex nimmt immer Werte von 0 bis 255 ein und geht nie über die Grenzen der Arraydimension hinaus. Er erlaubt es, alle Prüfungen von den Methoden zu entfernen, verbunden mit einem möglichen Ausstieg aus dem Index über die Arraygrenzen hinaus, indem die Methoden selbst vereinfacht wurden und die Performance verbessert wurde. Aber die Buffergröße ist immer konstant und hat die Größe von 256 Elementen. Für viele Aufgaben ist das eine akzeptable Alternative zur universellen Klasse CArrayRing im Tausch gegen eine höhere Verarbeitungsgeschwindigkeit.

Deklaration

сlass CArrayRing256

Titel

#include <IncOnRingBuffer\CArrayRing256.mqh>

Die Datei der CArrayRing256.mqh Klasse sollte in den Ordner IncOnRingBuffer der in MQL5\Include\ erstellt werden muss kopiert werden.

Klassenmethoden 

//--- Buffer-Initialisierungsmethode:
void Init(
   double volue=EMPTY_VALUE // Wert für leere Positionen des Buffers
   );
//--- Methode zum Hinzufügen von neuen Elementen zum Buffer:
void Add(
   const double element     // hinzzufügender Elementwert
   ); 

//--- diese Methode schreibt den Elementwert des gegebenen Index zurück:
void Update(                // gibt bei Fehler false zurück, bei Erfolg - true
   const double element,    // neuer Wert des Elements
   const uchar  index=0     // der Elementindex
   );  

//--- diese Methode gibt den Elementwert des gegebenen Index zurück:
double At(                  // gibt den Wert für das Mengenelement zurück
   const uchar index        // der Elementindex
   ) const;

//--- Methode gibt den Wert des Elements zurück, das zuletzt in den Buffer geschrieben wurde:
double Last() const;

//--- Methode überschreibt den letzten Elementwert im Buffer:
void Last(
   const double element     // neuer Wert des Elements
   );  

//--- Methode gibt die Größe des Ringbuffers zurück:
int Size();

Hinweis:

  • Die Größe des Ringbuffers ist immer konstant gleich 256 Elementen
  • in der gegebenen Realisierung des Ringbuffers wird die Indexierung wir in Zeitreihen akzeptiert, d.h. das Gegenteil wie üblich 

Beispiele

Verwendung dieser Klasse ist ähnlich wie bei CArrayRing . Es gibt ein paar Unterschiede:

  • Die Init() Methode wird zur Initialisierung des Buffers mit dem definierten Wert verwendet;
  • Die Resize() Methode gibt es nicht, da die Größe des Buffers immer konstant ist.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1379

Breakout Bars Trend v2 Breakout Bars Trend v2

Die zweite (bearbeitete und hinzugefügte) Version des alternativen Indikators für die Trenddefinition basierend auf dem Ausbruch von Balken und Entfernung zu den Extrema. Die Ausbruchslevel und Größe des vorherigen Trends wurden hinzugefügt.

Klasse zum Zeichnen des AMA unter Verwendung des Ringbuffers Klasse zum Zeichnen des AMA unter Verwendung des Ringbuffers

Diese Klasse wurde zur Berechnung des technischen Indikators Adaptive Moving Average (Adaptive Moving Average, AMA) mit Hilfe des Algorithmus des Ringbuffers entworfen.

Ein Beispiel wie man  CSV-Dateien wie Tabellen verarbeitet Ein Beispiel wie man CSV-Dateien wie Tabellen verarbeitet

Die CSV Datei wurde geschrieben um Wirtschaftnachrichten zu schreiben, aber es gab ein Problem, bei dem das Terminal nicht zwischen Zeilen unterschied, genauer gesagt deren Nummer wenn mit der CSV-Datei gearbeitet wurde. Daher habe ich beschlossen meine Lösung des Problems zu teilen.

X-bars Fractals X-bars Fractals

Der X-bars Fractals Indikator erlaubt die Einstellung der Anzahl von Balken, die sich links und rechts vom Fraktal befinden. Gut geeignet sowohl für lokale, als auch für globale Extrema