Autor original: Dmitriy.
O UltraMFI é um indicador que se baseia no MFI (Índice de Fluxo de Dinheiro), utilizando uma análise de múltiplas linhas de sinal. O algoritmo de cálculo das linhas de sinal funciona da seguinte forma. Temos parâmetros de entrada do indicador que servem como dados fonte:
- StartLength - valor inicial mínimo da primeira linha de sinal;
- Step - passo de alteração do período;
- StepsTotal - número total de alterações de período.
Qualquer valor de período das várias linhas de sinal é calculado usando uma progressão aritmética:
SignalPeriod(Number) = StartLength + Number * Step,
onde o valor da variável Number varia de zero a StepsTotal. Os valores obtidos dos períodos são adicionados a um array de variáveis e são utilizados em cada tick do indicador para obter um array de valores suavizados do indicador Percent Range de Larry Williams. As direções da tendência atual para cada um dos suavizados são calculadas, assim como o número de tendências positivas e negativas para todo o array de valores MFI suavizados.
O número final de tendências positivas e negativas é, por sua vez, suavizado e usado como as linhas do indicador que formam uma nuvem colorida, exibida com a ajuda da classe de estilo DRAW_FILLING.
A direção da tendência neste indicador é determinada pela cor da nuvem, enquanto sua força é avaliada pela largura da nuvem. Você pode utilizar os níveis de sobrecompra (UpLevel) e sobrevenda (DnLevel) que são definidos em porcentagem a partir da faixa máxima do indicador.
Os algoritmos de suavização podem ser escolhidos entre dez versões possíveis:
- SMA - média móvel simples;
- EMA - média móvel exponencial;
- SMMA - média móvel suavizada;
- LWMA - média móvel ponderada linear;
- JJMA - média adaptativa JMA;
- JJurX - média ultralinear;
- ParMA - média parabólica;
- T3 - suavização exponencial múltipla de Tillson;
- VIDYA - suavização usando o algoritmo de Tushar Chande;
- AMA - suavização usando o algoritmo de Perry Kaufman.
É importante notar que os parâmetros Phase1 e Phase2 têm significados completamente diferentes para diferentes algoritmos de suavização. Para o JMA, trata-se de uma variável externa de Fase que varia de -100 a +100. Para o T3, é uma razão de suavização multiplicada por 100 para melhor visualização; para o VIDYA, é o período do oscilador CMO e para o AMA, é o período da média móvel lenta. Em outros algoritmos, esses parâmetros não influenciam a média. Para o AMA, o período da média móvel rápida é fixado em 2 por padrão. A razão de potência também é igual a 2 para o AMA.
O indicador utiliza as classes da biblioteca SmoothAlgorithms.mqh (copie-as para <diretório_dados_terminal>\MQL5\Include). As classes foram descritas em detalhe no artigo Média de Séries de Preços para Cálculos Intermediários sem Usar Buffers Adicionais.
//+----------------------------------------------+ //| Parâmetros de entrada do indicador | //+----------------------------------------------+ input int MFI_Period=13; // Período do indicador MFI input ENUM_APPLIED_VOLUME VolumeType=VOLUME_TICK; // Volume do indicador MFI //---- input Smooth_Method W_Method=MODE_JJMA; // Método de suavização input int StartLength=3; // Período de média inicial input int WPhase=100; // Parâmetro de suavização // para JJMA varia na faixa de -100 ... +100 e influencia a qualidade do período de transição; // Para VIDIA, é o período CMO, para AMA, é o período da média móvel lenta //---- input uint Step=5; // Passo de alteração do período input uint StepsTotal=10; // Número total de alterações de período //---- input Smooth_Method SmoothMethod=MODE_JJMA; // Método de suavização input int SmoothLength=3; // Profundidade de suavização input int SmoothPhase=100; // Parâmetro de suavização // para JJMA varia na faixa de -100 ... +100 e influencia a qualidade do período de transição; //---- input uint UpLevel=80; // Nível de sobrecompra em %% input uint DnLevel=20; // Nível de sobrevenda em %% input color UpLevelsColor=Blue; // A cor do nível de sobrecompra input color DnLevelsColor=Blue; // A cor do nível de sobrevenda input STYLE Levelstyle=DASH_; // Estilo dos níveis input WIDTH LevelsWidth=Width_1; // Largura dos níveis //+----------------------------------------------+

Fig. 1. O indicador UltraMFI
Publicações relacionadas
- Buffers Horários para Coleta de Dados no MetaTrader 5
- Calendário Econômico: Monitoramento e Cache para Testes de Estratégia no MetaTrader 5
- Painel Gráfico: Mostre a Tendência Atual em Todos os Tempos no MetaTrader 4
- Pivot Point Personalizado com Horário de Fechamento Ajustável para MetaTrader 4
- Utilitário de Informações de Séries e Taxas para MetaTrader 5: Maximize Seu Trading