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 o indicador ER usando o buffer anel - indicador para MetaTrader 5
- Visualizações:
- 1539
- Avaliação:
- Publicado:
- 2014.01.14 15:11
- 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 CEROnRingBuffer é projetada para o cálculo do indicador técnico Rácio Eficiente (Efficiency Ratio, ER) utilizado na Média Móvel Adaptiva (Adaptive Moving Average, AMA) utilizando o algoritmo do buffer anel.
Declaração
class CEROnRingBuffer : public CArrayRing
Título
#include <IncOnRingBuffer\CEROnRingBuffer.mqh>
O arquivo da classe CEROnRingBuffer.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 = 34, // período para cálculo do ER 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 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 ER 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
);
//--- 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 de cálculo do ER 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 ER: #include <IncOnRingBuffer\CEROnRingBuffer.mqh> CEROnRingBuffer er; ... //+------------------------------------------------------------------+ //| 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 em preços de séries temporais: er.MainOnArray(rates_total,prev_calculated,price); ... //--- Dados de uso do buffer anel "er", // por exemplo, copie os dados nos buffers do indicador: for(int i=start;i<rates_total;i++) { ER_Buffer[i] = er[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:
- O arquivo Test_ER_OnArrayRB.mq5 calcula o indicador com base no preço de séries temporais. A aplicação do método MainOnArray() é demonstrado.
- O arquivo Test_ER_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). No início, o indicador ER é calculado e desenhado. Em seguida, com base na buffer anel deste indicador, mais um ER é desenhado.
O resultado do trabalho do Test_ER_OnArrayRB.mq5 com o tamanho do buffer anel de 256 elementos
O resultado do trabalho do Test_ER_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/1374
BrainTrend2 é um indicador de tendências do mercado que atribui cores para os candles de acordo com a direção da tendência.
WcciPatternsIndicador Woodies CCI Paterns.
Indicador que se baseia no famoso trader Korykin.
PriceVSwmaVariação sobre o tema da combinação linear não trivial dos osciladores Estocásticos.