Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Clase para crear el buffer circular - librería para MetaTrader 5
- Visualizaciones:
- 1287
- Ranking:
- Publicado:
- 2014.01.15 09:15
- Actualizado:
- 2014.02.28 07:40
- ¿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.
с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:
- Clase de trazado Moving Average
- Clase de trazado Promedio Rango Verdadero
- Clase de trazado Promedio de Índice de Movimiento Direccional
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1340
La clase está diseñada para el cálculo de las medias móviles (Moving Average) utilizando el algoritmo del buffer circular.
EA_AMLAsesor Experto que basa las operaciones en el indicador AML, en la intersección de la barra con la linea del indicador.
El zigzag más sencillo y rápido.
Exp_ColorLeManTrendEl sistema de comercio Exp_ColorLeManTrend se basa en los cambios de dirección de la tendencia que muestra el indicador ColorLeManTrend