Mira cómo descargar robots gratis
¡Búscanos en Telegram!
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 trazar el Estocástico usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1171
Ranking:
(21)
Publicado:
2014.01.15 09:06
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 CStochasticOnRingBuffer está diseñada para el cálculo del indicador técnico Oscilador Estocástico (Stochastic Oscillator) utilizando el algoritmo del buffer circular

Declaración

class CStochasticOnRingBuffer

Título

#include <IncOnRingBuffer\CStochacticOnRingBuffer.mqh>

Archivo de la clase CStochasticOnRingBuffer.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 la clase del buffer circular y la clase de Media Móvil 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_k    = 5,         // periodo %K
   int            period_d    = 3,         // periodo %D
   int            period_s    = 3,         // periodo de ralentización %K
   ENUM_MA_METHOD method      = MODE_SMA,  // metodo %D
   int            size_buffer = 256,       // tamaño del fuffer circular, número de dato almacenado
   bool           as_series   = false      // verdadero, si timeserie, falso - si indexación habitual de los datos de entrada
   );   
//--- 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 los elementos de las series separadas de la matriz           
double MainOnValue(               // devuelve el valor estocástico para el conjunto de elementos 
   const int    rates_total,      // tamaño de elemento
   const int    prev_calculated,  // elemetos procesados de la matriz
   const int    begin,            // desde donde los datos significativos del inicio de la matriz
   const double high,             // valor máximo 
   const double low,              // valor mínimo 
   const double close,            // precio de cierre 
   const int    index             // índice de los elemetos
   );
//--- the methods of access to the data:
int    BarsRequired();   // Devuelve el número necesario de barras para dibujar el indicador
string Name();           // Devuelve el nombre del indicador
string NameSignal();     // Devuelve el nombre del indicador línea de la señal
string Method();         // Devuelve el método de suavizado en forma de línea de texto
int    PeriodK()         // Devuelve el periodo %K
int    PeriodS()         // Devuelve el periodo de suavizado %K
int    PeriodD()         // Devuelve el periodo %D
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 estocástico:
#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>
CStochasticOnRingBuffer st;

...

//+------------------------------------------------------------------+
//| Función de iteración de indicador 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 basado en serie de precios:
   st.MainOnArray(rates_total,prev_calculated,high,low,close);

...

//--- Utilizar los datos Frim el buffer circular "st",
//    por ejemplo, afrontar los datos en los buffers del indicador:
   for(int i=start;i<rates_total && !IsStopped();i++)
     {
      MainBuffer[i]   = st[rates_total-1-i];        // la línea principal del indicador
      SignalBuffer[i] = st.signal[rates_total-1-i]; // la línea de señal del indicador
     }

...

//--- devuelve el valor de prev_calculated para la siguiente 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 _OnArrayRB.mq5 Test_estocásticocalcula el indicador basado en la serie de tiempo de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo _OnValueRB.mq5 Test_estocásticomuestra el uso del método MainOnValue(). Al principio el indicador Oscilador estocástico se calcula y se dibuja. Luego basándose en el búfer circular se dibujan dos líneas más del Oscilador Estocástico


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



El resultado del trabajo del Test_Stochastic_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/1372

HistVolatility HistVolatility

Este indicador calcula la volatilidad histórica clásica de un activo financiero.

ParkinsonHistVolatility ParkinsonHistVolatility

Volatilidad histórica de Parkinson.

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 la elaboración de OsCD usando el buffer circular Clase para la elaboración de OsCD usando el buffer circular

La clase está diseñada para el cálculo del indicador técnico Media Móvil del Oscilador (Moving Average of Oscillator, OsMA) usando el algoritmo del buffer circualr.