Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

Clase para crear el buffer circular - librería para MetaTrader 5

Visualizaciones:
1287
Ranking:
(41)
Publicado:
2014.01.15 09:15
Actualizado:
2014.02.28 07:40
\MQL5\Include\IncOnRingBuffer\
carrayring.mqh (6.57 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Descripción

El búfer circular es una de las formas de organización para almacenar datos. Generalmente se representa una matriz de longitud finita en la entrada donde los elementos más antiguos son sustituidos por los nuevos datos. Por lo tanto, siempre hay acceso a un determinado número de los últimos datos. Se utilizan principalmente para la lectura/escritura asincrónica de una secuencia de datos. Para más información mira aquí.

Al escribir los asesores expertos y los indicadores a menudo no se necesitan almacenar los valores calculados para todos las barras. Será suficiente con tener a mano los últimos datos, por ejemplo, para 100 barras. El búffer circular es adecuado para esto. Ventajas obvias:

  • aumento de cálculos
  • economía de memoria
  • fácil de utilizar, ninguna necesidad de preocuparse por la salida más allá de la matriz.
Declaración

сlass CArrayRing

Título

#include <IncOnRingBuffer\CArrayRing.mqh>

Archivo de la clase CArrayRing.mqh necesita ser colocado en la carpeta IncOnRingBuffer que es necesario crear en MQL5\Include\. Hay ejemplos que esta clase utiliza en los enlaces de abajo.

Métodos de la clase 

//--- método de incio de buffer:
bool Init(                  // si hay error devuelve falso, si exitoso - verdadero
   int    size,             // tamaño del búfer circular
   double volue=EMPTY_VALUE // significado para buffers de ubicación vacío
   );
//--- método para añadir un elemento nuevo en el buffer:
void Add(
   const double element     // valor de elemento añadido
   ); 
//--- el método sobrescribe el valor del elemento con el índice indicado:
bool Update(                // si hay error devuelve falso, si exitoso - verdadero
   const double element,    // nuevo valor del elemento
   const int index=0        // Índice del elemento
   );  
//--- el método devuelve el valor del elemento el índice indicado:
double At(                  // devuelve valor del elemento
   const int index          // Índice del elemento
   ) const;
//--- el método devuelve el valor de la última escritura en el elemento del búfer:
double Last() const;
//--- el método sobrescribe el último valor del elemento en el buffer :
void Last(
   const double element     // nuevo valor del elemento
   );  
//--- el método devuelve el tamaño del búfer circular:
int Size();
//--- el método cambia el tamaño del búfer circular:
bool Resize(
   const int size           // nuevo tamaño
   );

Nota:

  • Cuando el tamaño del búfer disminuye, como de costumbre, no faltan los últimos elementos pero si los más antiguos
  • en la formación dada del búfer circular se aceptada la indexación como en series de tiempo, es decir, lo contrario a lo habitual 

Ejemplos

Hay tres ejemplos usando el buffer circular en momento de la publicación:

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1340

La clase de trazado Moving Average usando el buffer circular La clase de trazado Moving Average usando el buffer circular

La clase está diseñada para el cálculo de las medias móviles (Moving Average) utilizando el algoritmo del buffer circular.

EA_AML EA_AML

Asesor Experto que basa las operaciones en el indicador AML, en la intersección de la barra con la linea del indicador.

Fast ZigZag Fast ZigZag

El zigzag más sencillo y rápido.

Exp_ColorLeManTrend Exp_ColorLeManTrend

El sistema de comercio Exp_ColorLeManTrend se basa en los cambios de dirección de la tendencia que muestra el indicador ColorLeManTrend