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 del TEMA usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1091
Ranking:
(28)
Publicado:
2014.01.15 08:33
Actualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\
carrayring.mqh (6.64 KB) ver
\MQL5\Indicators\OnRingBuffer\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Descripción

La clase CTEMAOnRingBuffer está diseñada para el cálculo del indicador técnico Media Móvil Triple Exponencial (Triple Exponencial Moving Average, TEMA) utilizando el algoritmo del buffer circular.  

Declaración

class CTEMAOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CTEMAnRingBuffer.mqh>

Archivo de la clase CTEMAOnRingBuffer.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 las clases del buffer circular, DEMA y Moving Average también deben estar en esta carpeta.

Métodos de la clase

//--- método de inicio:
bool Init(                                // si error cevuelve falso, si exitoso - verdadero
   int            period      = 12,       // periodo del TEMA
   ENUM_MA_METHOD method      = MODE_EMA, // método de suavizado
   int            size_buffer = 256,      // tamaño del buffer circular
   bool           as_series   = false     // verdadero, si timeseries, de otra manera - falso
   );
//--- el método de cálculo basado en una serie de tiempo o los buffers de indicadores:          
int MainOnArray(                  // devuelve el número de los elementos procesados  
   const int     rates_total,     // tamaño de la matriz
   const int     prev_calculated, // elementos procesados en la llamada anterior
   const double& price[],         // la matriz para los cálculos
   );
//--- tque el método de cálculo basado en una serie de elementos de la serie por separado de la matriz           
double MainOnValue(              // devuelve el valor del TEMA para conjunto de elementos (barras)
   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 double value,           // valor de los elementos (barras)
   const int    index            // índice del elemento (barra) index
   );
//--- 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 el periodo
int                 Size();          // Devuelve el tamaño del buffer circular
double              MA(int index);   // Devuelve del valor del MA, indexado como timeseries
double              DEMA(int index); // Devuelve el valor del DEMA, indexado como timeseries

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 TEMA:
#include <IncOnRingBuffer\CTEMAOnRingBuffer.mqh>
CTEMAOnRingBuffer tema;

...

//+------------------------------------------------------------------+
//| Función iteración del indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // tamaño de la matriz price[]
                 const int prev_calculated,  // barras procesadas en la llamada anterior
                 const int begin,            // desde donde comienza la información significativa
                 const double& price[])      // método para los cálculos
  {
//--- cálculo del indicador sobre la base de una serie de tiempo:
    tema.MainOnArray(rates_total,prev_calculated,price);

...

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

...

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

Cuando se calcula el TEMA también se realiza el cálculo de la Media Móvil y DEMA con los mismos parámetros. Podemos obtener los datos del buffer circular de MA y del DEMA utilizando el método de MA (int index) y DEMA (int index), respectivamente:

//--- utilizar los datos de la Media Móvil y del buffer circular del DEMA,
//    por ejemplo, copiarlos en los buffers del indicadore:
   for(int i=start;i<rates_total && !IsStopped();i++)
     {
      MA_Buffer[i]   = dema.MA(rates_total-1-i);   // linea del indicador MA
      DEMA_Buffer[i] = dema.DEMA(rates_total-1-i); // linea del indicador DEMA
     }

Tenga en cuenta que la indexación de los buffers circulares es igual que en la serie de tiempo.

Ejemplos

  1. El indicador calcula el archivo Test_TEMA_OnArrayRB.mq5 sobre la base de las series temporales de precios. Se demuestra la aplicación del método MainOnArray()
  2. El Test_TEMA_OnValueRB.mq5 demuestra el uso del método MainOnValue(). Al principio el indicador TEMA se calcula y se dibuja. Después, sobre la base de este buffer circular del indicador se dibuja otro TEMA más. 


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



El resultado del trabajo del Test_TEMA_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/1417

SuperWoodiesCCI SuperWoodiesCCI

El indicador realiza la estrategia de negociación utilizando el CCI

La clase para el trazado de los fractales usando el buffer circular La clase para el trazado de los fractales usando el buffer circular

La clase está diseñada para el cálculo del indicador técnico Fractales (Fractals) utilizando el algoritmo del buffer circular.

Predict Predict

Indicador de señales, de tipo semáforo, con tres variantes de señal

StepMA_v6.4 StepMA_v6.4

Un indicador de tendencia sencillo de tipo NRTR