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
La clase de trazado Moving Average usando el buffer circular - indicador para MetaTrader 5
- Visualizaciones:
- 1076
- Ranking:
- Publicado:
- 2014.01.15 09:15
- Actualizado:
- 2016.11.22 07:33
- ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Descripción
La clase CMAOnRingBuffer está diseñada para el cálculo de las medias móviles (Moving Average) utilizando el algoritmo del buffer circular.
Declaración
class CMAOnRingBuffer :public CArrayRing
Título
#include <IncOnRingBuffer\CMAOnRingBuffer.mqh>
Archivo de la clase CMAOnRingBuffer.mqh debe colocarse en la carpeta IncOnRingBuffer que es necesario establecer en MQL5\Include\. Se adjuntan a la descripción dos archivos con los ejemplos utilizados por la clase de esta carpeta. El archivo con la clase del búfer circular también debe estar en esta carpeta.
Métodos de la clase
//--- método de inicio: bool Init( // si hay error devuelve falso, si es exitoso - verdadero int ma_period = 14, // Perioso del MA suavizado ENUM_MA_METHOD ma_method = MODE_SMA, // método del MA suavizado int size_buffer = 256, // tamaño del búfer circilar, número de datos almacenados bool as_series = false // verdadero, si es una timeserie, falso si es una indexación habitual de los datos de entrada );
//--- método de cálculo basado en una timeserie o buffer de indicador: int MainOnArray( // devuelve el número de los elementos procesados de la matriz const int rates_total, // tamaño de la matriz array[] const int prev_calculated, // elementos procesados de la matriz en la llamada anterior const double &array[] // matriz para el cálculo );
//--- método de cálculo basado en elementos de las series separadas de la matriz double MainOnValue( // devuelve el valor MA para el conjunto de elementos const int rates_total, // the size of the array const int prev_calculated, // elementos procesados en la matriz const int begin, // desde donde comienzan los datos significativos del comienzo de la matriz const double value, // valor del elemento de la matriz const int index // índice del elemento de la matriz );
//--- methods of access to the data: int BarsRequired(); // Devuelve el número necesario de barras para trazar el indicador string Name(); // Devuelve el nombre del indicador string MAMethod(); // Devuelve el método del suavizado en la forma de la línea de texto int MAPeriod(); // Devuelve el período del suavizado
Es posible obtener los datos calculados del indicador desde el buffer circular a partir de la matriz habitual. Por ejemplo:
#include <IncOnRingBuffer\CMAOnRingBuffer.mqh> CMAOnRingBuffer ma; ... //+------------------------------------------------------------------+ //| Indicador personalizado de la función iteración | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- cálculo del indicador: ma.MainOnArray(rates_total,prev_calculated,price); ... //--- copai los datos desde el buffer circular "ma" hasta el indicador: for(int i=start;i<rates_total;i++) { MA_Buffer[i]=ma[rates_total-1-i]; } return(rates_total); }
Tenga en cuenta que esta indexación en el buffer circular es la misma que en una serie de tiempo.
Ejemplos
- El indicador calcula el archivo Test_MA_OnArrayRB.mq5 sobre la base de los precios de las timeseries. Se demuestra la aplicación del método MainOnArray()
- Los archivos Test_MA_OnValueRB.mq5 demostrados utilizan el método MainOnValue(). Al principio el indicador MA se calcula y dibuja. Luego basándose en el búfer circular de este indicador, se calcula un indicador MA más.
El resultado del trabajo del Test_MA_OnArrayRB.mq5 con el tamaño del búfer circular de 256 elementos Al escribir el código fueron utilizados los desarrollos de MetaQuotes Software Corp., Integer y GODZILLA.
El resultado del trabajo del Test_MA_OnValueRB.mq5 con el tamaño del búfer circular de 256 elementos
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1342
Asesor Experto que basa las operaciones en el indicador AML, en la intersección de la barra con la linea del indicador.
CombinatoriaBiblioteca inicial de funciones combinatorias.
La clase permite organizar la mini timeserie, indicador minibuffers, cortos tamaños de buffers para almacenar datos de flujo intermedios dentro del EA o del indicador.
Fast ZigZagEl zigzag más sencillo y rápido.