Assista a como baixar robôs de negociação gratuitos

Roteiro interessante?
Então poste um link sobre isto -
deixe que outros avaliem

Você gostou do roteiro? Experimente no terminal MetaTrader 5

Indicadores

A classe para desenhar o indicador Fractals usando o buffer anel - indicadores para MetaTrader 5

Konstantin Gruzdev | Portuguese English Русский 中文 Español Deutsch 日本語

Visualizações:
986
Classificação:
votos: 21
Publicado:
2014.01.14 15:02
Atualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\\MQL5\Indicators\OnRingBuffer\

A classe foi projetada para cálculo do indicador técnico Fractais (Fractals) utilizando o algoritmo do buffer anel.

Declaração

class CFractalsOnRingBuffer

Título

#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>

O arquivo da classe CFractalsOnRingBuffer.mqh deve ser colocado na pasta IncOnRingBuffer que precisa ser criada em MQL5\Include\. Dois arquivos com exemplos são utilizados pela classe a partir desta pasta que está anexado para a descrição. O arquivo da classe de buffer de ring também deve estar nesta pasta.

Métodos de classe

//--- initialization method:
bool Init(                      // se com erro vai retornar "false", se bem sucedido - "true"
   int  bars_right  = 2,        // o número de barras para as extremidades a direita
   int  bars_left   = 2,        // o número de barras para as extremidades a esquerda
   int  size_buffer = 256,      // o tamanho do buffer anel
   bool as_series   = false     // "true", se for uma série temporal, do contrário - "false"
   );
//--- Método de cálculo baseado em série de tempo ou no buffer do indicador:          
int MainOnArray(                  // retorna o número de elementos processados 
   const int     rates_total,     // o tamanho da array
   const int     prev_calculated, // elementos processados na chamada anterior
   const double& high[],          // o valor da array da máxima do preço
   const double& low[],           // o valor da array da mínima do preço
   );
//--- Método de cálculo do fractal baseado em elementos de série separados da array high[]          
double MainOnHigh(               // retorna o valor do fractal superior para o elemento index-bars_right (barra)
   const int    rates_total,     // o tamanho da array
   const int    prev_calculated, // elementos processados da array
   const int    begin,           // a partir de onde os dados significativos da array iniciam
   const double high,            // a máxima da barra atual
   const int    index            // o índice do elemento atual (barra)
   );
//--- Método de cálculo do fractal baseado em elementos de série separados da array[]          
double MainOnLow(                // retorna o valor do fractal inferior para o elemento index-bars_right (barra)
   const int    rates_total,     // o tamanho da array
   const int    prev_calculated, // elementos processados da array
   const int    begin,           // a partir de onde os dados significativos da array iniciam
   const double low,             // a mínima da barra atual
   const int    index            // o índice do elemento atual (barra)
   );
//--- Métodos de acesso aos dados:
int    BarsRequired();  // Retorna o número necessário de barras para desenhar o indicador
string Name();          // Retorna o nome do indicador
string NameUpper()      // Retorna o nome dos fractals superior
string NameLower()      // Retorna o nome dos fractals inferior
int    BarsRight()      // Retorna o número das barras a direita, a partir das extremidades 
int    BarsLeft()       // Retorna o número das barras a esquerda, a partir das extremidades
int    Size();          // Retorna o tamanho do buffer anel

Os dados calculados do indicador a partir do buffer anel são possíveis de serem obtidos a partir da array usual. Por exemplo:

//--- A classe com os métodos de cálculo do indicador Fractals:
#include <IncOnRingBuffer\CFractalsOnRingBuffer.mqh>
CFractalsOnRingBuffer fractals;

...

//+------------------------------------------------------------------+
//| função de iteração do 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 do indicador baseado na série temporal do preço:
   fractals.MainOnArray(rates_total,prev_calculated,high,low);

...

//--- Utilizar os dados do buffers anel "fractals",
//    por exemplo, copiar os dados no buffer do indicador:
   for(int i=start;i<rates_total-BarsRight && !IsStopped();i++)
     {
      UpperBuffer[i] = fractals.upper[rates_total-1-i]; // fractals superior
      LowerBuffer[i] = fractals.lower[rates_total-1-i]; // fractals inferior
     }

...

//--- Valor de retorno de prev_calculated para a próxima chamada:
   return(rates_total);
  }

Por favor, note que a indexação no buffer anel é a mesma que na série temporal.

Exemplos:

  1. O indicador calcula o arquivo Test_Fractals_OnArrayRB.mq5 com base na série temporal de preço. A aplicação do método MainOnArray() é demonstrado.
  2. O arquivo Test_Fractals_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). Primeiro o indicador Fractals é calculado e desenhado. Em seguida, com base na buffer anel deste indicador, mais um Fractals é desenhado.

O resultado do trabalho do Test_Fractals_OnArrayRB.mq5 com o tamanho do buffer anel de 256 elementos

O resultado do trabalho do Test_Fractals_OnValueRB.mq5 com o tamanho do buffer anel de 256 elementos

Ao escrever código foram utilizados os desenvolvimentos da MetaQuotes Software Corp, Integer  e  GODZILLA.

Traduzido do russo por MetaQuotes Software Corp
código original: https://www.mql5.com/ru/code/1422

Expert Advisor - Index Moving Average Expert Advisor - Index Moving Average

Este Expert Advisor utiliza o indicador Índice Média Móvel - Index Moving Average (IMA).

Exp_CandleStop_Trailing Exp_CandleStop_Trailing

O Expert Advisor modifica os níveis de Stop Loss das posições em aberto ao longo dos limites do canal construído utilizando o indicador CandleStop.

SuperWoodiesCCI SuperWoodiesCCI

Este indicador se baseia em uma estratégia de negociação utilizando o CCI.

A classe para desenhar o indicador TEMA usando o buffer anel A classe para desenhar o indicador TEMA usando o buffer anel

A classe foi projetada para cálculo do indicador técnico Média Móvel Exponencial Tripla (Triple Exponential Moving Average, TEMA) utilizando o algoritmo do buffer anel.