Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
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 uma média móvel usando o buffer anel (ring) - indicador para MetaTrader 5

Visualizações:
1694
Avaliação:
(22)
Publicado:
2014.01.14 15:15
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 foi projetada para cálculo de médias móveis (Moving Average) usando o algoritmo do buffer anel.

Declaração

class CMAOnRingBuffer :public CArrayRing

Título

#include <IncOnRingBuffer\CMAOnRingBuffer.mqh>

O arquivo da classe CMAOnRingBuffer.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 buffer anel 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            ma_period   = 14,       // período da Média Móvel suavizada 
   ENUM_MA_METHOD ma_method   = MODE_SMA, // método da Média Móvel suavizada
   int            size_buffer = 256,      // o tamanho do buffer anel, número de dados armazenados
   bool           as_series   = false     // "true", se for uma série temporal, "false" se houver uma indexação comum nos dados de entrada
   );             
//--- Método de cálculo baseado em série de tempo ou no buffer de indicador:          
int MainOnArray(                  // retorna o número de elementos processados da array  
   const int     rates_total,     // tamanho da array[]
   const int     prev_calculated, //  elementos processados da array na chamada anterior
   const double &array[]          // array usada para o cálculo
   );
//--- Método de cálculo com base em elementos de série separados da array           
double MainOnValue(              // retorna valor da MA para o elemento configurado
   const int    rates_total,     // o  tamanho da array
   const int    prev_calculated, // elementos processados na array
   const int    begin,           // a partir de onde os dados significativos da array iniciam
   const double value,           // o valor do elemento array 
   const int    index            // o índice do elemento array
   );
//--- 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 MAMethod();       // Retorna o método suavizado na forma da linha de texto  
int    MAPeriod();       // Retorna o período suavizado

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

#include <IncOnRingBuffer\CMAOnRingBuffer.mqh>
CMAOnRingBuffer ma;
...
//+------------------------------------------------------------------+
//| função de iteração do indicador personalizado                    |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- cálculo do indicador:
   ma.MainOnArray(rates_total,prev_calculated,price);

...
     
//--- Copiar dados do buffer anel da média móvel para o indicador:  
   for(int i=start;i<rates_total;i++)
     {
      MA_Buffer[i]=ma[rates_total-1-i];
     }
   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_MA_OnArrayRB.mq5 na base da série temporal de preço. A aplicação do método MainOnArray() é demonstrado.
  2. O arquivo Test_MA_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). No início, o indicador MA é calculado e desenhado. Em seguida, com base no buffer anel deste indicador, mais um indicador МA é calculado.


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


O resultado do trabalho do Test_MA_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/1342

Blau_Ergodic Blau_Ergodic

Oscilador Ergodic por William Blau.

Combinatória Combinatória

Biblioteca inicial de funções combinatórias.

A classe para criar o buffer anel A classe para criar o buffer anel

A classe permite organizar uma mini série de tempo, minibuffers de indicador, buffers de tamanhos curtos para armazenar dados de fluxo de intermediários dentro do Expert Advisor ou indicador.

Blau_TSI Blau_TSI

Indicador Índice de Força verdadeira (TSI) por William Blau.