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 AMA usando o buffer anel. - indicador para MetaTrader 5

Visualizações:
1644
Avaliação:
(17)
Publicado:
2014.01.14 15:10
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 CAMAOnRingBuffer foi projetada para cálculo do indicador técnico Média Móvel Adaptativa (Adaptive Moving Average, AMA) utilizando o algoritmo do buffer anel.

Declaração

class CAMAOnRingBuffer : public CArrayRing

Título

#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>

O arquivo da classe CAMAOnRingBuffer.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. Arquivo da classe do buffer anel e da classe Efficiency Ratio também devem 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        = 10,       // período AMA 
   int            fast_period   = 2,        // período rápido EMA 
   int            slow_period   = 30,       // período lento EMA
   int            size_buffer   = 256,      // o tamanho do buffer anel, o 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 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 valores de entrada
   );
//--- Método de cálculo com base em elementos de série separados da array            
double MainOnValue(              // retorna o valor AMA 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 double value,           // o valor do elemento da array
   const int    index            // o índice do elemento
   );
//--- 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 FastPeriod();     // Retorna o período rápido de suavização EMA  
int     SlowPeriod();    // Retorna o período lento de suavização EMA 
int    Period();         // Retorna o período AMA
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 AMA:
#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>
CAMAOnRingBuffer ama;

...

//+------------------------------------------------------------------+
//| 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 baseado no preço de série temporal 
   ama.MainOnArray(rates_total,prev_calculated,price);

...

//--- usando dados do buffer anel "ama",
//    por exemplo, copie os dados no buffer do indicador: 
   for(int i=start;i<rates_total;i++)
      AMA_Buffer[i] = ama[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_AMA_OnArrayRB.mq5 calcula o indicador com base no preço da série temporal. A aplicação do método MainOnArray() é demonstrado.
  2. O arquivo Test_AMA_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). No início, o indicador AMA é calculado e desenhado. Em seguida, com base na buffer anel deste indicador, mais um AMA é desenhado.

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

O resultado do trabalho do Test_AMA_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/1375

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

A classe foi projetada para cálculo do indicador técnico Índice de Fluxo de Dinheiro (Money Flow Index, MFI) utilizando o algoritmo do buffer anel.

BrainTrend2Stop BrainTrend2Stop

BrainTrend2Stop é um indicador de detecção de inversão de tendência, ele é exibido pelas linhas de stops. A Intersecção da linha indica a reversão de tendência e o tempo para fechar as posições abertas anteriormente.

BrainTrend2Sig BrainTrend2Sig

BrainTrend2Sig é um indicador de tendências do mercado, que atribui um símbolo tipo semáforo abaixo ou acima dos candles de acordo com a direção da tendência.

RD-TrendTrigger RD-TrendTrigger

Oscilador que utiliza o cálculo da média T3 da Análise Técnica de Ações e Commodities (Dec. 2004).