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
Indicadores

La clase de trazado Moving Average usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1076
Ranking:
(22)
Publicado:
2014.01.15 09:15
Actualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\
carrayring.mqh (6.57 KB) ver
\MQL5\Indicators\IncOnRingBuffer\
¿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

  1. 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() 
  2. 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



El resultado del trabajo del Test_MA_OnValueRB.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.

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

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.

Combinatoria Combinatoria

Biblioteca inicial de funciones combinatorias.

Clase para crear el buffer circular Clase para crear el buffer circular

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 ZigZag Fast ZigZag

El zigzag más sencillo y rápido.