Mira cómo descargar robots gratis
¡Búscanos en Facebook!
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

La clase para trazar el Momentum usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
886
Ranking:
(19)
Publicado:
2014.01.15 08:54
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 CMomentumOnRingBuffer está diseñada para el cálculo del indicador técnico Momentum (Impulso) utilizando el algoritmo del buffer circular

Declaración

class CMomentumOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>

Archivo de la clase CMomentumOnRingBuffer.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. El archivo con la clase del búfer circular también debe estar en esta carpeta.

Métodos de la clase

//--- metodo de inicio:
bool Init(                  // si error devuelve falso, si exitoso - verdadero
   int  period      = 14,   // periodo del Momentum
   int  size_buffer = 256,  // tamaño del buffer circular
   bool as_series   = false // verdad, si timeserie, de lo contrario - falsa
   );
//--- el método de cálculo basado en una serie de tiempo o el buffer de indicador:          
int MainOnArray(                  // devuelve el número de elementos procesados  
   const int     rates_total,     // tamaño de la matriz array[]
   const int     prev_calculated, // elementos procesados en la llamada anterior
   const double& array[],         // matriz de los datos de entrada
   );
//--- el método de cálculo basado en los elementos de las series separadas de la matriz           
double MainOnValue(               // devuelve el valor del Momentum  para el conjunto de elemetos
   const int    rates_total,      // tamaño de la matriz
   const int    prev_calculated,  // elementos procesados de la matriz
   const int    begin,            // desde donde comienzan los datos significativos de la matriz
   const long   value,            // valor de los elementos de la amtr000iz
   const int    index             // índice de elemento
   );
//--- 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
int                 Period();       // Devuelve del periodo
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:

//--- la clase con los métodos de cálculo del indicador Momentum:
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>
CMomentumOnRingBuffer momentum;

...

//+------------------------------------------------------------------+
//| Función iteración del indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      //tamaño del precio de la matriz[]
                 const int prev_calculated,  // barras procesadas en las llamadas anteriores
                 const int begin,            // desde donde comienza la información significativa
                 const double& price[])      // la matriz de los cálculos
  {
//--- el cálculo del indicador sobre la base de series de tiempo:
   momentum.MainOnArray(rates_total,prev_calculated,price);

...
 
//--- utilizar esos datos del buffer circular "momentum",
//    por ejemplo, copiar los datos en el buffer de indicador:
   for(int i=start;i<rates_total && !IsStopped();i++)
      Momentum_Buffer[i] = momentum[rates_total-1-i]; // linea del indicador

...

//--- valor de retorno de prev_calculated para la próxima llamada:
   return(rates_total);
  }

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

Ejemplos

  1. El archivo Test_Momentum_OnArrayRB.mq5 calcula el indicador sobre la base de las series temporales de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_Momentum_OnValueRB.mq5 muestra el uso del método MainOnValue(). En primer lugar se calcula y se dibuja el indicador Momentum. Después sobre la base de este buffer circular de este indicador se dibuja un indicador Momentum más. 


El resultado del trabajo del Test_Momentum_OnArrayRB.mq5 con el tamaño del buffer circular de 256 elementos



El resultado del trabajo del Test_Momentum_OnValueRB.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.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1396

Exp_BrakeExp Exp_BrakeExp

El sistema de trading basado en señales tomadas del semáforo BrakeExp, indicador de señal de tendencia

EA de Tendencia de Barras Breakout EA de Tendencia de Barras Breakout

El EA basado en el Indicador de Tendencia de barras Breakout v2. En dependencia de la configuración de entrada se realiza como en el cambio de tendencia, después de que falta el conjunto de números de las señales falsas.

TrendEnvelopes TrendEnvelopes

El típico indicador de semáforo para tendencias.

Exp_BrakeMA Exp_BrakeMA

Sistema de comercio basado en señales tomadas del semáforo BrakeMA, indicador de señal de tendencia