Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5

A classe para desenhar uma média móvel usando o buffer anel (ring) - indicador para MetaTrader 5
- Visualizações:
- 1878
- Avaliação:
- Publicado:
- 2014.01.14 15:15
- Atualizado:
- 2016.11.22 07:33
-
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:
- 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.
- 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

Oscilador Ergodic por William Blau.

Biblioteca inicial de funções combinatórias.

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.

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