Se você é trader e está sempre em busca de ferramentas que possam ajudar na análise técnica, a classe CMFIOnRingBuffer pode ser uma excelente adição ao seu arsenal. Neste post, vamos explorar como essa classe permite calcular o Money Flow Index (MFI) utilizando um buffer circular.
Descrição
A classe CMFIOnRingBuffer foi desenvolvida para calcular o indicador MFI seguindo a lógica do buffer circular. Isso garante que você tenha um desempenho otimizado ao trabalhar com dados históricos.
Como Declarar a Classe
class CMFIOnRingBuffer : public CArrayRing
A declaração da classe deve ser feita a partir do arquivo CMFIOnRingBuffer.mqh, que deve estar localizado na pasta IncOnRingBuffer dentro do diretório MQL5\Include\. Junto com a classe, você também precisará de dois arquivos de exemplo que já estão disponíveis nessa pasta.
Métodos da Classe
A classe possui diversos métodos que facilitam a implementação do MFI. Aqui estão alguns dos principais:
//--- método de inicialização: bool Init(// retorna false se houver erro, true se bem-sucedido int period = 14, // o período do MFI ENUM_MA_METHOD method = MODE_SMA, // método de suavização ENUM_APPLIED_PRICE applied_price = PRICE_TYPICAL, // preço usado na calulação ENUM_APPLIED_VOLUME applied_volume = VOLUME_TICK, // volume usado na cálculo int size_buffer = 256, // tamanho do buffer circular bool as_series = false); // true se for uma série temporal
Exemplo de Uso
Para acessar os dados calculados pelo MFI a partir do buffer circular, você pode usar a classe como mostrado abaixo:
//--- classe com os métodos de cálculo do MFI: #include <IncOnRingBuffer\CMFIOnRingBuffer.mqh> CMFIOnRingBuffer mfi; 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[]) { mfi.MainOnArray(rates_total, prev_calculated, open, high, low, close, tick_volume, volume); // aqui você pode acessar os dados do MFI
Resultados e Exemplos
Os resultados podem ser visualizados em gráficos, como demonstrado nas imagens abaixo:

Resultado do Test_MFI_OnArrayRB.mq5

Resultado do Test_MFI_OnValueRB.mq5
Conclusão
Integrar a classe CMFIOnRingBuffer no seu código pode aprimorar sua análise técnica, permitindo um cálculo mais eficiente do MFI. Experimente e veja como ele pode fazer a diferença nas suas operações!
Publicações relacionadas
- Buffers Horários para Coleta de Dados no MetaTrader 5
- AllAverages v4.9 MT5: O Indicador Imperdível para Traders
- iMFISignAlert: O Indicador para MetaTrader 5 que Gera Alertas
- Bandas Quantílicas: Entenda Esse Indicador para MetaTrader 5
- Pivot Point Personalizado com Horário de Fechamento Ajustável para MetaTrader 4