Descripción
La clase CMomentumOnRingBuffer está diseñada para calcular el indicador técnico Momentum (Momentum) utilizando el algoritmo de buffer circular.
Declaración
class CMomentumOnRingBuffer : public CArrayRing
Título
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>El archivo CMomentumOnRingBuffer.mqh debe ubicarse en la carpeta IncOnRingBuffer, que a su vez debe estar en MQL5\Include\. Se adjuntan dos archivos con ejemplos utilizados por la clase desde esta carpeta. También debes asegurarte de que el archivo con la clase de el buffer circular esté en esta carpeta.
Métodos de la clase
//--- método de inicialización: bool Init( // si hay error retorna falso, si es exitoso - verdadero int periodo = 14, // el período del Momentum int tam_buffer = 256, // el tamaño del buffer circular bool es_serie = false // verdadero, si es una serie temporal, de lo contrario - falso );
//--- método de cálculo basado en una serie temporal o el buffer del indicador: int MainOnArray( // retorna el número de elementos procesados const int total_rates, // tamaño del array array[] const int prev_calculado, // elementos procesados en la llamada anterior const double& array[], // array de datos de entrada );
//--- método de cálculo basado en elementos separados de la serie del array double MainOnValue( // retorna el valor del Momentum para el elemento establecido const int total_rates, // tamaño del array const int prev_calculado, // elementos procesados del array const int inicio, // desde donde comienza los datos significativos del array const long valor, // el valor del elemento del array const int indice // el índice del elemento );
//--- métodos para acceder a los datos: int BarsRequired(); // Retorna el número necesario de barras para dibujar el indicador string Name(); // Retorna el nombre del indicador int Período(); // Retorna el período int Tamaño(); // retorna el tamaño del buffer circular
Obtener los datos calculados del indicador desde el buffer circular es posible como desde un array normal. Por ejemplo:
//--- la clase con los métodos de cálculo del indicador Momentum: #include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh> CMomentumOnRingBuffer momentum; ... //+------------------------------------------------------------------+ //| Función de iteración del indicador personalizado | //+------------------------------------------------------------------+ int OnCalculate (const int total_rates, // tamaño del array price[] const int prev_calculado, // barras procesadas en la llamada anterior const int inicio, // desde donde comienzan los datos significativos const double& precio[]) // el array para el cálculo { //--- cálculo del indicador basado en series temporales: momentum.MainOnArray(total_rates,prev_calculado,precio); ... //--- usa los datos del buffer circular de "momentum", // por ejemplo, copia los datos en el buffer del indicador: for(int i=inicio;i<total_rates && !IsStopped();i++) Momentum_Buffer[i] = momentum[total_rates-1-i]; // la línea del indicador ... //--- retorna el valor de prev_calculado para la próxima llamada: return(total_rates); }
Ten en cuenta que la indexación en el buffer circular es la misma que en la serie temporal.
Ejemplos
- El archivo Test_Momentum_OnArrayRB.mq5 calcula el indicador en base a la serie de precios. Se demuestra la aplicación del método MainOnArray().
- El archivo Test_Momentum_OnValueRB.mq5 demuestra el uso del método MainOnValue(). Primero se calcula y dibuja el indicador Momentum. Luego, basado en este buffer circular, se dibuja otro indicador Momentum.

Resultado del trabajo del Test_Momentum_OnArrayRB.mq5 con un tamaño de buffer circular de 256 elementos

Resultado del trabajo del Test_Momentum_OnValueRB.mq5 con un tamaño de buffer circular de 256 elementos
El desarrollo del código involucra a MetaQuotes Software Corp., Integer y GODZILLA.
Publicaciones relacionadas
- Ideal ZigZag: Un Indicador Rápido para MetaTrader 5
- iStochKomposterAlert: El Indicador de Señales para MetaTrader 5 con Alertas
- iDeMarkerSignAlert: Tu nuevo indicador para MetaTrader 5
- Cruce de Líneas de Tendencia: Un Indicador Esencial para MetaTrader 5
- Convergencia y Divergencia Estocástica: Un Indicador Clave para MetaTrader 5