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 el trazado de los fractales usando el buffer circular - indicador para MetaTrader 5

Visualizaciones:
1304
Ranking:
(24)
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

El CFractalsOnRingBuffer está diseñado para el cálculo del indicador técnico Fractales (Fractals) utilizando el algoritmo del buffer circular

Declaración

class CFractalsOnRingBuffer

Título

#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>

El archivo de la CFractalsOnRingBuffer.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

//--- méetodo de inicio:
bool Init(                      // si error devuelve falso, si exitoso - verdadero
   int  bars_right  = 2,        // el número de barras de la derecha al extremum
   int  bars_left   = 2,        // el número de barras de la izquierda al extremum
   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 del indicador:          
int MainOnArray(                  // devuelve el número de elementos procesados  
   const int     rates_total,     // tamaño de la matriz
   const int     prev_calculated, // elementos procesados en la llamada anterior
   const double& high[],          // matriz del maximum
   const double& low[],           // matriz del minimum
   );
//--- el método de cálculo de fractal sobre la base de una serie de elementos separados de la matriz high[]          
double MainOnHigh(               // devuelve el valor del fractal bajo para el elemento de índice de bars_right (barra)
   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 high,            // barra maximum actual
   const int    index            // índice del elemento actual (barra)
   );
//--- método de cálculo del fractal abajo sobre la base de unos elementos de las series separadas de la matriz low[]          
double MainOnLow(                // devuelve por valor del fractal bajo para el elemento de índice de bars_right (barra)
   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 low,             // la barra minimum actual, elemento de la matriz maximum corriente. 
   const int    index            // índice del elemento (barra) corriente
   );
//--- 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
string NameUpper()      // Devuelve el nombre de los fractales altos
string NameLower()      // Devuelve el nombre de los fractales bajos
int    BarsRight()      // Devuelve el número de barras desde la derecha hasta el extremum
int    BarsLeft()       // Devuelve el número de barras desde la izquierda hasta el extremum
int    Size();          // Devuelve el tamaño del buffer circular

Es posible obtener los datos calculados del indicador de los buffers circulares a partir de la matriz habitual. Por ejemplo:

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

...

//+------------------------------------------------------------------+
//| Función iteración del 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 la serie de precios:
   fractals.MainOnArray(rates_total,prev_calculated,high,low);

...

//--- utilizar los datos de los buffers circulares de los "fractales",
//    por ejemplo, copiar los datos en el buffer del indicador:
   for(int i=start;i<rates_total-BarsRight && !IsStopped();i++)
     {
      UpperBuffer[i] = fractals.upper[rates_total-1-i]; // up fractals
      LowerBuffer[i] = fractals.lower[rates_total-1-i]; // down fractals
     }

...

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

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_Fractals_OnArrayRB.mq5 sobre la base de las series temporales de precios. Se ha demostrado la aplicación del método MainOnArray().
  2. El archivo Test_Fractals_OnValueRB.mq5 muestra el uso del método MainOnValue(). Al principio el indicador de los fractales se calcula y se dibuja. Después, sobre la base de este buffer circular del indicador se dibuja otro fractal más. 


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



Resultado del trabajo del Test_Fractals_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/1422

Exp_CandleStop_Trailing Exp_CandleStop_Trailing

El EA mueve el Stop Loss de la posición de apertura a lo largo de la frontera del canal construido con el indicador CandleStop

Exp_StepSto_v1 Exp_StepSto_v1

El Asesor Experto dibuja en base a las señales del oscilador estocástico StepSto_v1

SuperWoodiesCCI SuperWoodiesCCI

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

La clase para trazar del TEMA usando el buffer circular La clase para trazar del TEMA usando el buffer circular

La clase 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.