Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Indicadores

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

Visualizações:
1202
Avaliação:
(19)
Publicado:
2014.01.14 15:05
Atualizado:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\IncOnRingBuffer\
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

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

Declaração

class CMomentumOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>

O arquivo da classe CMomentumOnRingBuffer.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

//--- Método de inicialização:
bool Init(                  // se com erro vai retornar "false", se bem sucedido - "true"
   int  period      = 14,   // período do Momentum
   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& array[],          // a array dos dados de entrada
   );
//--- Método de cálculo com base em elementos de série separados da array             
double MainOnValue(               // retorna o valor do indicador Momentum para o elemento configurado
   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 long   value,            // o valor do elemento da array
   const int    index             // o índice do elemento
   );
//--- Os 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
int                 Period();       // Retorna o período
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 métodos de cálculo do indicador Momentum:
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>
CMomentumOnRingBuffer momentum;

...

//+------------------------------------------------------------------+
//| função de iteração do indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // o tamanho da array price[]
                 const int prev_calculated,  // barras processadas na chamada anterior
                 const int begin,            // onde in iniciam os dados significativos
                 const double& price[])      // a array para cálculo
  {
//--- Cálculo do indicador baseado na série temporal do preço:
   momentum.MainOnArray(rates_total,prev_calculated,price);

...
 
//--- Utilizar os dados do buffer anel "momentum" ,
//     por exemplo, copiar os dados no buffer de indicador:
   for(int i=start;i<rates_total && !IsStopped();i++)
      Momentum_Buffer[i] = momentum[rates_total-1-i]; //linha do indicador

...

//--- 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 arquivo Test_Momentum_OnArrayRB.mq5 calcula o indicador com base no preço das séries temporais. A aplicação do método MainOnArray() é demonstrado.
  2. O arquivo Test_Momentum_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). Primeiro o indicador Momentum é calculado e desenhado. Em seguida, com base no buffer anel deste indicador, mais um indicador Momentum é desenhado.

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

O resultado do trabalho do Test_Momentum_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 pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/1396

Breakout Bars Trend EA Breakout Bars Trend EA

Expert Advisor baseado no indicador Breakout Bars Trend v2. Dependendo das configurações da entrada é executado na inversão da tendência, levando em conta a configuração do número falsos sinais.

Módulo de sinais de negociação, com base no indicador BrainTrend2 Módulo de sinais de negociação, com base no indicador BrainTrend2

Uma vela limão do indicador BrainTrend2 é um sinal para abrir uma posição de compra, uma vela Magenta é um sinal para abrir uma posição de venda.

TrendEnvelopes TrendEnvelopes

Indicador de tendência na forma de semáforo.

ytg_Fractals_Price ytg_Fractals_Price

Indicador que exibe os níveis de preço via fractais.