Mira cómo descargar robots gratis
¡Búscanos en Telegram!
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

Clase de trazado el ATR usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1169
Ranking:
(22)
Publicado:
2014.01.15 09:14
Actualizado:
2020.08.19 11:32
\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 CATROnRingBuffer está diseñada para el cálculo del indicador de rango verdadero promedio (Average True Range, ATR) utilizando el algoritmo del buffer circular

Declaración

class CATROnRingBuffer

Título

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>

Archivo del CATROnRingBuffer.mqh debe ser colocado 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. Archivo con la clase del buffer circular y la clase de Media mMvil también debe estar en esta carpeta.

Métodos de la clase

//--- método de inicio:
bool Init(                                // Si error devuelve falso, de exitoso - verdadero
   int            ma_period   = 14,       // periodo del MA suavizado 
   ENUM_MA_METHOD ma_method   = MODE_SMA, // método del MA suavizado
   int            size_buffer = 256,      // tamaño del buffer circulas, número del dato almacenado
   bool           as_series   = false     // verdadero, si timeserie, falso si indexación habitual de la entrada de datos
   );             
//--- método de cálculo basado en una timeserie o buffers del indicador:          
int MainOnArray(                  // devuelve el número de elementos procesados  
   const int     rates_total,     // tamaño de las matrices
   const int     prev_calculated, //elementos procesados en la llamada anterior
   const double &high[]           // máximo valor de la matriz
   const double &low[]            // mínimo valor de la matriz
   const double &close[]          // matriz de precio de cierre
   );
//--- método de cálculo basado en la serie de elementos separados en la matriz           
double MainOnValue(              // devuelve el valor de ATR 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 hay valores significativos de la matriz starts
   const double high,            // valor máximo 
   const double low,             // valor mínimo 
   const double close,           // precio de cierre 
   const int    index            // ïndice de los elementos
   );
//--- métodos de acceso a los datos:
int    BarsRequired();   // Devuelve el número necesario de barras para dibujar el indicador
string Name();           // Devuelve el nombre del indicador
string MAMethod();       // Devuelve el método de suavizado en la forma de la línea de texto  
int    MAPeriod();       // Devuelve el período de suavizado
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:

#include <IncOnRingBuffer\CATROnRingBuffer.mqh>
CATROnRingBuffer atr;

...

//+------------------------------------------------------------------+
//| Función del indicador iteración personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//--- cálculo del indicador:
   atr.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...

//--- copiar datos desde el buffer circular "atr" en el indicador:  
   for(int i=start;i<rates_total;i++)
     {
      ATR_Buffer[i]=atr[rates_total-1-i];
     }
   return(rates_total);
  }

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

Ejemplos

  1. El archivo Test_ATR_OnArrayRB.mq5 calcula el indicador sobre la base de las timeseries de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_ATR_OnValueRB.mq5 muestra el uso del método MainOnValue(). Al principio el indicador ATR se calcula y luego se traza. Luego, basándose en el búfer circular de este indicador, se calcula una línea más del indicador de ATR. 


Resultado del trabajo del Test_ATR_OnArrayRB.mq5 con el tamaño del buffer circular de 256 elementos



Resultado del trabajo del Test_ATR_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/1344

MultiX2MASignal MultiX2MASignal

El MultiX2MASignal muestra información de la tendencia actual por medio de los cuatro indicadores X2MA que se obtienen de distintos marcos temporales.

Clase de trazado el ADX usando el buffer circular Clase de trazado el ADX usando el buffer circular

La clase está diseñada para el cálculo de el indicador técnico Indice de Movimiento Direccional Promedio (Average Directional Movement Index, ADX) utilizando el algoritmo del buffer circular.

MultiXRSXSignal MultiXRSXSignal

El MultiXRSXSignal muestra información de la tendencia actual por medio de los cuatro indicadores XRSX que se obtienen de distintos marcos temporales.

Exp_ColorTrend_CF Exp_ColorTrend_CF

El sistema de comercio Exp_ColorTrend_CF se basa en el cambio de dirección de la tendencia mostrada por el indicador ColorTrend_CF