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
- Visualizações:
- 2026
- Avaliação:
- Publicado:
- 2014.01.14 15:10
- 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 CMFIOnRingBuffer foi projetada para cálculo do indicador técnico Índice de Fluxo de Dinheiro (Money Flow Index, MFI) utilizando o algoritmo do buffer anel.
Declaração
class CMFIOnRingBuffer : public CArrayRing
Título
#include <IncOnRingBuffer\CMFIOnRingBuffer.mqh>
O arquivo da classe CMFIOnRingBuffer.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 com a classe do buffer anel e a classe Média Móvel 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 = 14, // período da MFI ENUM_MA_METHOD method = MODE_SMA, // método de suavização ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL, // preço usado para o cálculo ENUM_APPLIED_VOLUME applied_volume = VOLUME_TICK, // volume usado para o cálculo int size_buffer = 256, // tamanho do buffer anel bool as_series = false // "true", se for uma série temporal,do contrário - "false" );
//--- O método de cálculo baseado na série temporal ou nos buffers do indicadore: int MainOnArray( // retorna o número de elementos processados const int rates_total, // o tamanho das arrays const int prev_calculated, // elementos processados na chamada anterior const double& open[], // abertura dos preços const double& high[], // máxima dos preços const double& low[], // mínima dos preços const double& close[], // fechamento dos preços const long& tick_volume[], // volume de tick const long& volume[]); // volume de estoque );
//--- Método de cálculo com base em elementos de série separados da array double MainOnValue( // retorna o valor MFI para o elemento configurado (barra) const int rates_total, // to 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 open, // abertura da barra de preço const double high, // o valor da máxima da barra preço const double low, // o valor da mínima da barra preço const double close, // fechamento da barra de preço const long tick_volume, // volume de tick da barra const long volume, // volume de estoque da barra const int index // índice do elemento (barra) );
//--- 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 string Method(); // Retorna o método na forma de linha de texto ENUM_APPLIED_PRICE Price(); // Retorna o tipo de preço usado ENUM_APPLIED_VOLUME Volume(); // Retorna o tipo de volume usado 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 MFI: #include <IncOnRingBuffer\CMFIOnRingBuffer.mqh> CMFIOnRingBuffer mfi; ... //+------------------------------------------------------------------+ //| função de iteração do indicador personalizado | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { //--- Cálculo do indicador baseado na série temporal do preço: mfi.MainOnArray(rates_total,prev_calculated,open,high,low,close,tick_volume,volume); ... //--- Utilizar os dados do buffer anel "mfi", // por exemplo, copiar os dados no buffer do indicador: for(int i=start;i<rates_total && !IsStopped();i++) MFI_Buffer[i] = mfi[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_MFI_OnArrayRB.mq5 calcula o indicador com base no preço das séries temporais. A aplicação do método MainOnArray() é demonstrado.
- O arquivo Test_MFI_OnValueRB.mq5 demonstra a utilização do método MainOnValue(). Primeiro o indicador MFI é calculado e desenhado. Em seguida, com base no buffer anel deste indicador, mais um indicador MFI é desenhado.
O resultado do trabalho do Test_MFI_OnArrayRB.mq5 com o tamanho do buffer anel de 256 elementos
O resultado do trabalho do Test_MFI_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/1395

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.

Indicador de Direção de Tendência BrainTrend1.

A classe foi projetada para cálculo do indicador técnico Média Móvel Adaptativa (Adaptive Moving Average, AMA) utilizando o algoritmo do buffer anel.

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.