Mira cómo descargar robots gratis
¡Búscanos en Twitter!
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 dibujar MACD usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1467
Ranking:
(19)
Publicado:
2014.01.15 09:08
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 CMACDOnRingBuffer está diseñada para el cálculo del indicador técnico Móvil Promedio convergencia/divergencia (Moving Average Convergence/Divergence,MACDl) usando el algoritmo del buffer circular

Declaración

class CMACDOnRingBuffer

Título

#include <IncOnRingBuffer\CMACDOnRingBuffer.mqh>

Archivo de la clase CMACDOnRingBuffer.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

//--- 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 de tiempo o el buffer del 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[]          // la matriz de los valores de entrada
   );
//--- método de cálculo basado en los elementos de las series separadas de la matriz           
double MainOnValue(              // devuelve el valor del MACD para el conjunto de elementos
   const int    rates_total,     // tamaño de la matriz
   const int    prev_calculated, // wlwmwtos procesados de la matriz
   const int    begin,           // desde donde los datos significativos del inicio de la matriz
   const double value,           // valor de los elementos de la matriz
   const int    index            // Índice de los elementos
   );
//--- métodos de acceso a los datos:
int    BarsRequired();   // Devuelve el número necesario de bares para trazar el indicador
string Name()            // Devuelve el nombre del indicador
string NameMain()        // Devuelve el nombre de la línea principal del indicador
string NameSignal()      // Devuelve el nombre de la línea de señal del indicador
string FastMethod()      // Devuelve el método de suavizado de línea rápida en forma de línea de texto
string SlowMethod()      // Devuelve el método de suavizado de línea lenta en la forma de la 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 los cálculos del indicador MACD:
#include <IncOnRingBuffer\CMACDOnRingBuffer.mqh>
CMACDOnRingBuffer macd;

...

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

...

//--- usar los datos del buffer circular del "macd",
//    copiar los datos en los buffers del indicador:
   for(int i=start;i<rates_total;i++)
     {
      MainBuffer[i]   = macd[rates_total-1-i];          // Histograma del indicador
      SignalBuffer[i] = macd.signal[rates_total-1-i];   // Linea de señal del indicador
     }
//--- devuelve el valor del prev_calculated para la llamda 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_MACD_OnArrayRB.mq5 calcula el indicador basado en series temporales de precios. Se demuestra la aplicación del método MainOnArray()
  2. El archivo Test_MACD_OnValueRB.mq5 muestra el uso del método MainOnValue(). Al principio el indicador MACD se calcula y se traza. Después sobre la base del búfer circular de este indicador, se traza un indicador MACD más. 


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



el resultado del trabajo del Test_MACD_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/1361

PriceChannel Signal PriceChannel Signal

Este indicador es la conversión del famoso indicador de Igorad llamado PriceChannel_Signal_v1 con la característica de la re-entrada.

up3x1_Krohabor_D up3x1_Krohabor_D

Asesor Experto basado en tres medias móviles y la salida utilizando el Stop Loss o Take Profit. En ella se establece la entrada con la tendencia.

EF_distance EF_distance

Otra variación en las medias móviles...

ATR_OpenIndent_v2 ATR_OpenIndent_v2

El indicador muestra el precio de apertura de los marcos temporales superiores (por ejemplo, time frame 1-día) y dibuja una linea de guiones para el precio de apertura, formando de esta manera un rango.