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:
- 1740
- 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.
CombinatóriaBiblioteca 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.
Blau_TSIIndicador Índice de Força verdadeira (TSI) por William Blau.