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 para la elaboración del ER usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
932
Ranking:
(19)
Publicado:
2014.01.15 08:56
Actualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\
carrayring.mqh (6.64 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 CEROnRingBuffer está diseñada para calcular el indicador técnico Ratio de Eficiencia (ER) utilizado en el Adaptive Moving Average (Adaptive Moving Average, AMA) utilizando el algoritmo del buffer circular

Declaración

class CEROnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CEROnRingBuffer.mqh>

Archivo de la clase CEROnRingBuffer.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 error devuelve falso, si exitoso - verdadero
   int            period        = 34,       // periodo de cálculo del ER  
   int            size_buffer   = 256,      // tamaño del buffer circular, número de dato almacenado
   bool           as_series     = false     // verdadero, si timeseries, falso - si indexación habitual de los datos de entrada
   );
//--- método de cálculo basado en una serie temporal o buffer del indicador:          
int MainOnArray(                  // devuelve el número de lemenetos procesados  
   const int     rates_total,     // tamaño de la matriz array[]
   const int     prev_calculated, // elementos procesados en la llamada anterior
   const double &array[]          // matriz de los valores de entrada
   );
//--- //--- método de cálculo basado en los elementos de las series separadas de la matriz           
double MainOnValue(              // devuelve el valor ER para el conjunto de elementos
   const int    rates_total,     // tamaño de la matriz
   const int    prev_calculated, // elementos procesados de la matriz
   const int    begin,           // desde donde los datos significativos del inicio de la matriz
   const double value,           // valor de los elementos de la matriz
   const int    index            // índice de los elementos
    );
//--- the methods of access to the data:
int    BarsRequired();   // Devuelve el número necesario de barras para dibujar el indicador
string Name()            // Devuelve el nombre del indicador
int    Period()          // Devuelve el periodo de cálculo de ER
int    Size();           // Devuelve el tamaño del buffer circular

Es posible obtener los datos calculados del indicador desde el buffer circular a partir de la matriz habitual. Por ejemplo:

//--- the class with the methods of calculation of the ER indicator:
#include <IncOnRingBuffer\CEROnRingBuffer.mqh>
CEROnRingBuffer er;

...

//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizado                 |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total, 
                const int    prev_calculated, 
                const int    begin, 
                const double &price[]) 
  {
//--- cálculo del indicador, según el precio de series de tiempo:
   er.MainOnArray(rates_total,prev_calculated,price);

...

//--- utilizar los datos del buffer circular "er",
//    por ejemplo, copiar los datos en los buffers de los indicadores:
   for(int i=start;i<rates_total;i++)
     {
      ER_Buffer[i]   = er[rates_total-1-i];          // linea del indicador
     }
//--- valor de retorno de prev_calculated para la próxima llamada:
   return(rates_total);
  }

Tenga en cuenta que la indexación en el búfer circular es la misma que en la timeserie.

Ejemplos

  1. The Test_ER_OnArrayRB.mq5 file calculates the indicator based on price time series. Se demuestra la aplicación del método MainOnArray()
  2. El Test_ER_OnValueRB.mq5 demuestra el uso del método MainOnValue(). Al principio el indicador ER se calcula y se dibuja. Después sobre la base del buffer circular de este indicador se dibuja un ER uno. 


El resultado del trabajo del Test_ER_OnArrayRB.mq5 con el tamaño del buffer circular de 256 elementos



Los resultados del trabajo del Test_ER_OnValueRB.mq5 con el tamaño del buffer 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/1374

WcciPatterns WcciPatterns

El indicador Woodies CCI Paterns

Pivot Lines TimeZone Pivot Lines TimeZone

El indicador de niveles de Pivote, los subniveles Pivote y los niveles Camarilla, se muestran los buffers de indicadores y las líneas horizontales.

Visualizando Diferentes Objetos CChartObject en la Misma Ventana Visualizando Diferentes Objetos CChartObject en la Misma Ventana

Este script visualiza diferentes subgráficos en una misma ventana de acuerdo con el número de pares de divisas en el menú de Observación del Mercado.

MultiTrend_Signal_KVN MultiTrend_Signal_KVN

El indicador del famoso trader Korykin