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:
- 1181
- 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
![MultiX2MASignal](https://c.mql5.com/i/code/indicator.png)
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](https://c.mql5.com/i/code/indicator.png)
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](https://c.mql5.com/i/code/indicator.png)
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](https://c.mql5.com/i/code/expert.png)
El sistema de comercio Exp_ColorTrend_CF se basa en el cambio de dirección de la tendencia mostrada por el indicador ColorTrend_CF