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

Clase para la elaboración de OsCD usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
953
Ranking:
(20)
Publicado:
2014.01.15 09:06
Actualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\ \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 COsMAOnRingBuffer está diseñada para calcular el indicador técnico de Media Móvil del Oscilador (Moving Average of Oscillator, OsMA) usando el algoritmo del buffer circular

Declaración

class COsMAOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>

Archivo de la clase COsMAOnRingBuffer.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 el buffer circular, el MACD y clases Media Móvil también deben estar en esta carpeta.

Métodos de la clase

//--- método de inicio:
bool Init(                                  // si error devuelve falso, si exitoso - verdadero
   int            fast_period   = 12,       // periodo del MA suavizado rápido 
   int            slow_period   = 26,       // periodo del MA suavizado lento 
   int            signal_period = 9,        // periodo de la señal del MA suavizado 
   ENUM_MA_METHOD fast_method   = MODE_EMA, // método del MA suavizado rápidog
   ENUM_MA_METHOD slow_method   = MODE_EMA, // método del MA suavizado lentog
   ENUM_MA_METHOD signal_method = MODE_SMA, // método de la señal del MA suavizado
   int            size_buffer   = 256,      // tamaño del buffer circular, número de dato almacenado
   bool           as_series     = false     // verdadero, si timeseries, falso si indexación habitual de los datos de entrada
   );
//--- método de cálculo basado en una serie temporal o buffer del indicador:          
int MainOnArray(                  // devuelve el número de lemenetos 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 valores de entrada
   );
//--- el método de cálculo basado en los elementos de las series separadas de la matriz           
double MainOnValue(              // devuelve el valor de OsMA   al conjunto de elementos
   const int    rates_total,     // tamaño de la matriz
   const int    prev_calculated, // elementos procesados del inicio de la matriz
   const int    begin,           // from where the significant data of the array starts
   const double value,           // elementos significativos de la matriz
   const int    index            // ïndice de los elementos
   );
//--- método de acceso a los datos:
int    BarsRequired();   // Devuelve el número necesario de barras para la elaboración del indicador
string Name()            // Devuelve el nombre del indicador
string FastMethod()      // Devuelve el método de suavizado de la línea rápida en forma de línea de texto
string SlowMethod()      // Devuelve el método de suavizado de la línea lenta en forma de línea de texto
string SignalMethod()    // Devuelve el método de suavizado de la línea de señal en forma de línea de texto
int    FastPeriod()      // Devuelve el período de suavizado de la línea rápida
int    SlowPeriod()      // Devuelve el período de suavizado de la línea lenta
int    SignalPeriod()    // Devuelve el período de suavizado de la línea de señal
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:

//--- clase con los métodos de cálculo del indicador OsMA:
#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>
COsMAOnRingBuffer osma;

...

//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizada                 |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total, 
                const int    prev_calculated, 
                const int    begin, 
                const double &price[]) 
  {
//--- el cálculo del indicador en base a una serie de precios:
   osma.MainOnArray(rates_total,prev_calculated,price);

...

//--- usar el dato del buffer circular del "osma",
//    copiar lod datos en el buffer del indicador:
   for(int i=start;i<rates_total;i++)
      OsMABuffer[i]=osma[rates_total-1-i];          // histograma del indicador
//--- devuelve el valor de prev_calculated para la llamada siguiente:
   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_OsMA_OnArrayRB.mq5 calcula el indicador basado en series temporales de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_OsMA_OnValueRB.mq5 muestra el uso del método MainOnValue(). En primer lugar se calcula y se traza el indicador OsMA. Después, sobre la base de este buffer circualr de este indicador se traza un indicador de OsMA más. 


Resultado del trabajo del Test_OsMA_OnArrayRB.mq5 con el tamaño del buffer circular de 256 elementos.



Resultado del trabajo del Test_OsMA_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/1367

CCI_DrawMode CCI_DrawMode

Implementación de la opción de cambiar el modo de dibujo, como se ejemplifica en el indicador CCI.

Clase para trazar el Estocástico usando el buffer circular Clase para trazar el Estocástico usando el buffer circular

La clase está diseñada para el cálculo del indicador técnico Oscilador estocástico (Stochastic Oscillator) utilizando el algoritmo del buffer circular.

Trade_Time Trade_Time

Este indicador señala un período de operación que especifica la hora de inicio del comercio y la hora de finalización del comercio.

Exp_VininI_Trend Exp_VininI_Trend

El sistema de comercio Exp_VininI_Trend se basa en el cambio de dirección de la tendencia mostrada por el indicador VininI_Trend.