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
- Visualizaciones:
- 1309
- Ranking:
- Publicado:
- 2014.01.15 09:14
- Actualizado:
- 2020.08.19 11:32
-
¿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
- 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()
- 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 Al escribir el código fueron utilizados los desarrollos de MetaQuotes Software Corp., Integer y GODZILLA.
Resultado del trabajo del Test_ATR_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/1344

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

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.

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

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