Mira cómo descargar robots gratis
¡Búscanos en Twitter!
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 ADX usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1996
Ranking:
(24)
Publicado:
2014.01.15 09:14
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 CADXOnRingBuffer está diseñada para el cálculo de el indicador técnico Índice de Movimiento Direccional Promedio (Average Directional Movement Index,,ADX) utilizando el algoritmo del buffer circular

Declaración

clase CADXOnRingBuffer

Título

#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>

El archivo de la clase CADXOnRingBuffer.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. Archivo con la clase del buffer circular y la clase de Media Móvil 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 de MA suavizado 
   ENUM_MA_METHOD ma_method   = MODE_EMA, // método de MA suavizado
   int            size_buffer = 256,      // tamaño del buffer circular, número del dato almacenado
   bool           as_series   = false     // verdad, si timeserie, falso si la indexación habitual de los datos de entrada
   );             
//--- 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 para el cálculo basado en los elementos de las series separadas de la matriz            
double MainOnValue(              // devuelve el valor ADX 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 valores significativos del inicio de la matriz
   const double high,            // valor máximo 
   const double low,             // valor mínimo 
   const double close,           // preciode cierre 
   const int    index            // el índice del elemento
   );
//--- método de acceso a los datos:
int    BarsRequired();   // Devuelve el número necesario de barras para trazar el indicador
string NameADX();        // Devuelve el nombre del indicador
string NameNDI();        // Devuelve el nombre de la línea del indicador de movimiento direccional negativo
string NamePDI();        // devuelve el nombre de la línea del indicador de movimiento direccional positivo
string MAMethod();       // Devuelve el método de suavizado en la forma de la línea de texto 
int    MAPeriod();       // Devuelve el periodo del 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\CADXOnRingBuffer.mqh>
CADXOnRingBuffer adx;

...

//+------------------------------------------------------------------+
//| Función de iteración del indicador 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:
   adx.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...
     
//--- copiar los datos del buffer circular "adx" al indicador:
   for(int i=start;i<rates_total;i++)
     {
      ADX_Buffer[i]=adx[rates_total-1-i];      // índice del movimiento direccional medio
      PDI_Buffer[i]=adx.pdi[rates_total-1-i];  // Índice direccional positivo
      NDI_Buffer[i]=adx.ndi[rates_total-1-i];  // Índice direccional negativo
     }

   ...
  }

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

Ejemplos

  1. El archivo Test_ADX_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_ADX_OnValueRB.mq5 muestra el uso del método MainOnValue(). En primer lugar se calcula y se traza el indicador ADX. Después sobre la base del búfer circular de este indicador, se calculan tres líneas del indicador ADX. 


El resultado del trabajo del Test_ADX_OnArrayRB.mq5 con el tamaño del búfer circular de 256 elementos



El resultado del trabajo del Test_ADX_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/1343

La clase de trazado el ADX Wilder usando el buffer circular La clase de trazado el ADX Wilder usando el buffer circular

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

MultiMACDSignal MultiMACDSignal

MultiMACDSignal visualiza información sobre los valores actuales de la tendencia, utilzando los valores de seis indicadores MACD para periodos diferentes.

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 ATR usando el buffer circular Clase de trazado el ATR usando el buffer circular

La clase está diseñada para el cálculo del indicador de Rango Verdadero Promedio (Average True Range, ATR) utilizando el algoritmo del buffer circular.