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 el ADX Wilder usando el buffer circular - indicador para MetaTrader 5
- Visualizaciones:
- 1315
- Ranking:
- Publicado:
- 2014.01.15 09:14
- 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 CADXWOnRingBuffer está diseñada para el cálculo de un indicador técnico Índice de Movimiento Direccional Promedio (Average Directional Movement Index Wilder, ADX Wilder) utilizando el algoritmo del búfer circular .
Declaración
class CADXWOnRingBuffer
Título
#include <IncOnRingBuffer\CADXWOnRingBuffer.mqh>
El archivo de la clase CADXWOnRingBuffer.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
//--- metodo de inicio: bool Init( // si error devuelve falso, si exito - verdadero int ma_period = 14, // periodo del MA suavizado ENUM_MA_METHOD ma_method = MODE_SMMA, // método del MA suavizado int size_buffer = 256, // tamaño del buffer circular, número de dato almacenado bool as_series = false // verdadero si timeserie, falso - si 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 de cálculo sobre la base de los elementos de las series separadas de la matriz double MainOnValue( // devuelve el valor ADXW para el conjunto de elementos const int rates_total, // tamaño de la matriz const int prev_calculated, // procesado de elemetos de la matriz const int begin, // desde dode los datos son significativos del inicio de la matriz const double high, // valor máximo const double low, // valor mínimo const double close, // precio de cierre const int index // índice del elemento );
//--- método de acceso a los datos: int BarsRequired(); // Devuelve el número necesario de barras para trazar el indicador string NameADXW(); // 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 indicador direccional positivo 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\CADXWOnRingBuffer.mqh> CADXWOnRingBuffer adxw; ... //+------------------------------------------------------------------+ //| Función del indicaro 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: adxw.MainOnArray(rates_total,prev_calculated,high,low,close); ... //--- copiar los datos del buffer circular "adxw" en el indicador: for(int i=start;i<rates_total;i++) { ADXW_Buffer[i] = adxw[rates_total-1-i]; // Índice de Movimiento Direccional Promedio Wilder PDI_Buffer[i] = adxw.pdi[rates_total-1-i]; // índice direccional positivo NDI_Buffer[i] = adxw.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
- El archivo Test_ADXW_OnArrayRB.mq5 calcula el indicador basado en el timeserie de precio. Se demuestra la aplicación del método MainOnArray()
- El archivo Test_ADXW_OnValueRB.mq5 muestra el uso del método MainOnValue(). En primer lugar se calcula y se traza el indicador ADXW. Luego, sobre la base del buffer circular de este indicador, se calculan tres líneas del indicador de ADXW.
El resultado del trabajo del Test_ADXW_OnArrayRB.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.
El resultado del trabajo del Test_ADXW_OnValueRB.mq5 con el tamaño del buffer circular de 256 elementos
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1356
MultiMACDSignal visualiza información sobre los valores actuales de la tendencia, utilzando los valores de seis indicadores MACD para periodos diferentes.
ClockEl indicador muestra tres variantes de tiempo en el gráfico: local, servidor y GMT!
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.
MultiX2MASignalEl MultiX2MASignal muestra información de la tendencia actual por medio de los cuatro indicadores X2MA que se obtienen de distintos marcos temporales.