English Русский 中文 Español Deutsch 日本語
preview
Técnicas do Assistente MQL5 que você deve conhecer (Parte 53): Índice de Facilitação de Mercado

Técnicas do Assistente MQL5 que você deve conhecer (Parte 53): Índice de Facilitação de Mercado

MetaTrader 5Negociação |
18 5
Stephen Njuki
Stephen Njuki

Introdução

O artigo deveria ser sobre aprendizado de máquina, considerando a sequência que vinha sendo seguida nas publicações anteriores; no entanto, estou mantendo um indicador de negociação porque parte do material para o próximo artigo sobre aprendizado de máquina ainda não está totalmente pronta. Em breve estará, espero. 

O Índice de Facilitação de Mercado (MFI) reflete a capacidade do mercado de realizar mudanças de preço dentro de um determinado intervalo de tempo. Talvez, para contextualizar melhor, seja útil compará-lo com outro indicador de Bill Williams que abordamos no último artigo, o Awesome Oscillator (AO). Se começarmos pelo foco/propósito, o AO acompanha o momentum por meio de uma comparação entre as médias de preço mediano dos períodos 34 e 5, com a tese de que mudanças de maior magnitude representam grandes alterações de momentum e vice-versa. O MFI, por outro lado, concentra-se na eficiência do movimento de preços em relação ao volume, ou busca responder à pergunta: se o volume de negociação foi x, quanto o preço irá reagir em comparação a quando foi y.

O AO utiliza o contexto da linha zero para interpretar o tipo de momentum em jogo. De fato, todos os indicadores de Bill Williams abordados até agora dependem da linha zero; no entanto, o MFI não. Ele gera valores absolutos com base na faixa de preço e no volume, o que exige a comparação direta das variações do MFI. Os casos de uso também são ligeiramente diferentes, pois o MFI, como mencionado, é adequado para compreender a eficiência do mercado e a dinâmica do volume, especialmente quando combinado com outros indicadores e na busca por confirmação de rompimentos. O AO, por outro lado, é ideal para uso em estratégias de seguimento de tendência, pois ajuda a identificar fractais ou mudanças de momentum.


Onde:

  • Máxima: O preço mais alto do período de tempo selecionado.
  • Mínima: O preço mais baixo do período de tempo selecionado.
  • Volume: O volume total negociado durante esse período.

Embora o próprio MFI forneça um valor de indicador, seu uso/significado decorre do acompanhamento de suas variações em diferentes condições de mercado/volatilidade. Como um oscilador de histograma apenas positivo, ele fornece algumas cores-chave que merecem ser mencionadas. 

A cor verde significa:

A cor azul:

A cor marrom:

E a cor rosa:

Determinamos ou definimos nossas cores em MQL5 da seguinte forma:

   color             Color(int ind)
   {  //
      return(
               (Volume(ind) > Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrGreen :
               ((Volume(ind) < Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrBrown :
                ((Volume(ind) < Volume(ind + 1) && MFI(ind) > MFI(ind + 1)) ? clrBlue :
                 ((Volume(ind) > Volume(ind + 1) && MFI(ind) < MFI(ind + 1)) ? clrPink : clrNONE
                 ))));
   }

Na determinação do volume, estamos utilizando o volume de ticks, já que o volume real/de contratos é praticamente inexistente (principalmente no forex). No entanto, ao negociar ações, se essa informação estiver disponível, ela deve ser utilizada.


Volume de Tick vs Volume Real

A definição mais simples de volume de tick, que é pertinente ao MFI, seria o número de variações de preço em um determinado intervalo de tempo. Isso é simplista porque, normalmente, os ticks representam mais do que apenas mudanças de preço. Eles geralmente incluem qualquer alteração nas informações do contrato do ativo negociado, o que abrange itens como taxas de swap, nível de stop de negociação, etc. No entanto, no mercado forex, devido à natureza descentralizada dos mercados cambiais, os dados de volume real não estão disponíveis para muitos corretores, o que torna o volume de tick a melhor alternativa.

O volume real, por outro lado, representa o número real de contratos ou lotes negociados durante um determinado intervalo de tempo e é muito comum no mercado centralizado de ações e futuros, mas raro no forex. Estudos demonstraram uma forte correlação entre o volume de tick e o volume real, de modo que o proxy de volume de tick que estamos utilizando neste artigo não está muito distante do ideal.

Além disso, utilizar volume de tick no desenvolvimento de sistemas com um corretor específico pode tornar o Expert Advisor mais compatível ou utilizável com outros corretores, porque, na maior parte dos casos, o volume de tick é acessível na maioria dos corretores e não altera significativamente o desempenho entre eles, ao contrário do volume real, caso você encontre um corretor específico que o ofereça. Sua forte correlação positiva com a atividade do mercado e os baixos custos de uso são outras grandes vantagens da utilização do volume de tick.

Ele também possui suas limitações, como seria de se esperar. A principal delas é a superconsideração de mudanças de preço e alterações nas informações do ativo negociado. Se o preço de um ativo oscilar rapidamente entre dois valores em um curto intervalo, cada uma dessas oscilações será contabilizada como um tick e, portanto, como uma unidade de volume, mesmo que nenhuma tração real no preço seja refletida. O argumento para contabilizar isso é que ele acompanha o tamanho dos participantes do mercado. No entanto, se o trader x colocar uma grande ordem com muito volume e a mudança de preço se estender por vários pontos, essa variação de preço será registrada apenas como um único tick. 

Além disso, embora os dados de tick sejam amplamente acessíveis na maioria dos corretores, dado que geralmente possuem diferentes provedores de liquidez, o número de ticks registrados em um determinado momento pode variar bastante entre corretores, o que, em princípio, significa que seria necessário testar com os dados do corretor pretendido antes da implantação. Além disso, em mercados de baixa volatilidade ou mercados calmos, pequenas mudanças de preço podem criar picos enganosos de volume de tick.

Portanto, resumindo, o volume real, especialmente ao negociar ações ou ativos em mercados centralizados, é preferível ao volume de tick, pois captura melhor a participação do mercado, o que também significa que é um melhor rastreador de padrões-chave como divergência e é menos suscetível ao ruído de flutuações de preço, conforme argumentado acima. O desafio de utilizar volume real no forex é que, como mencionado, ele tem disponibilidade limitada, já que poucos corretores o oferecem, e os poucos que oferecem podem exigir contas premium para a assinatura desses dados de volume. Além disso, os dados oferecidos provavelmente serão inconsistentes de corretor para corretor devido à natureza descentralizada do mercado.


Significância do Valor Absoluto

O MFI também possui mais uma peculiaridade. Seu valor absoluto não é tão significativo. Se considerarmos outros osciladores como o RSI ou mesmo o Commodity Channel Index, seus valores absolutos são limiares importantes que podem ser utilizados para tomar decisões cruciais, por exemplo, quando o RSI cruza o nível 30.

Os valores absolutos do MFI não são tão importantes. Ironicamente, eles são maiores em períodos de tempo menores, enquanto são muito menores em períodos de tempo maiores! Acho que, como a maioria dos traders que deseja evitar ruído e sempre se concentra em períodos de tempo maiores, isso pode ser interpretado como uma pista de que os valores absolutos do MFI, por si só, não são tão significativos.

O que tende a importar aqui é a importância relativa das barras adjacentes; não seus valores.


Sinal Verde

Nosso primeiro padrão é o sinal verde básico, em que buscamos um histograma de cor verde para atuar como um sinal de entrada. Como você observará neste e em todos os padrões subsequentes, o MFI precisa ser combinado com a ação do preço ou com outro indicador para que seja possível inferir uma determinada tendência, seja ela de alta ou de baixa.

Assim, para um sinal de alta, precisaríamos ter um histograma verde, que, como mencionado acima, implica correlação positiva entre ação do preço e volume, juntamente com um preço de fechamento acima de uma média móvel predominante. Estamos utilizando um período do indicador de 8 e não estamos otimizando esse valor, mas alterações ficam a critério do leitor. A implementação desse padrão em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Esse padrão, que é rotulado como 0 por ser o primeiro, como temos feito ao longo destes artigos, pode ser testado exclusivamente atribuindo ao parâmetro de entrada “Padrões usados Bitmap” o valor 1. Se fizermos isso e realizarmos execuções de otimização para o par EUR JPY ao longo do ano de 2023 no período gráfico de 12 minutos, somos apresentados aos seguintes resultados de teste a partir de algumas configurações de entrada razoáveis:

r0

Como estamos testando Expert Advisors montados pelo assistente com base no código da nossa classe de sinal personalizada, normalmente otimizamos os limiares de abertura e fechamento, o delta do preço de entrada, a expiração das ordens pendentes e, claro, o valor de limiar para o padrão testado/selecionado. Os limiares variam de 0 a 100. Para leitores que são novos, há orientações aqui e aqui sobre como usar o código anexado ao final do artigo para montar um Expert Advisor por meio do Assistente MQL5.

Nosso padrão-0 é, portanto, mais adequado para confirmação de tendência, pois se encaixa bem em estratégias de seguimento de tendência.


Padrão Fade

Nosso próximo padrão, o padrão-1, refere-se a circunstâncias em que o MFI indica uma diminuição do momentum apesar da continuidade da tendência no preço. Ele geralmente representa uma perda de pressão compradora ou vendedora e, portanto, é usado para antecipar reversões ou consolidações de mercado. A principal forma de identificar o padrão Fade é por meio de divergência, em situações em que um MFI rosa é sinalizado enquanto o preço continua subindo (o que caracterizaria uma divergência de baixa) ou quando um MFI rosa é marcado com preços em queda (o que caracterizaria uma divergência de alta). Implementamos isso em MQL5 da seguinte forma:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrPink)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  return(true);
      }
   }
   return(false);
}

O padrão-1 também é marcado por achatamento após picos no preço. Como pode ser visto na fórmula da cor rosa acima, o padrão rosa é resultado principalmente da queda no volume, e isso, por sua vez, reduz a capacidade de sustentar tendências predominantes. Testar com o mesmo par acima, EUR JPY, em um período gráfico de 12 minutos, nos fornece o seguinte relatório.  

r1

As entradas utilizadas para essa execução resultam da otimização dos mesmos parâmetros descritos acima: limiares de abertura e fechamento, diferença de preço de entrada, expiração de ordens pendentes e limiar do padrão. Como estávamos testando exclusivamente com o padrão 1, o bitmap de entrada para padrões utilizados é 2 elevado à potência 2, o que resulta em 2.

As possíveis causas desse padrão, além da óbvia diminuição do volume, são a realização de lucros por parte dos traders ou o esgotamento do momentum. Suas implicações também são um pouco diversas. Ele pode ser um sinal precoce de reversão, o que significa que os traders podem se preparar para sair de posições abertas atuais ou realizar entradas na direção oposta. Alternativamente, pode ser um aviso de consolidação, especialmente quando é observado sem volatilidade ou sem divergência.

No entanto, o fade é mais confiável como sinal quando é acompanhado por divergência de preço, pois isso serve como uma alta probabilidade de reversão. O gerenciamento de risco envolvendo o uso de stops mais apertados pode ser adotado, já que o padrão fade atuará como um aviso para esses ajustes de posição. Além disso, a combinação com Bandas de Bollinger e médias móveis pode ajudar a marcar retrações e confirmar ainda mais os sinais.


Sinal Falso

O padrão-2, que é caracterizado pelo MFI azul, também é referido como Sinal Falso. “Falso” porque a ação do preço no gráfico não é corroborada pelo volume. Ele frequentemente induz traders a assumirem posições muito cedo, levando a perdas. Comum em mercados irregulares ou sem volatilidade, graças à prevalência de falsos rompimentos e reversões, nós o implementamos em MQL5 da seguinte forma:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBlue)
   {  if(T == POSITION_TYPE_BUY && Close(X()) < MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()) > MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Primeiramente, verificamos se o histograma do MFI está colorido de azul, o que, conforme compartilhado na fórmula acima, implica que a faixa de preço está aumentando com volume decrescente. Uma vez confirmada a cor azul, um padrão de alta ocorre se tivermos o preço de fechamento abaixo da média móvel, enquanto um padrão de baixa é o inverso, com o preço de fechamento acima da MA.

A tese central por trás da nossa implementação é que a ação atual do preço não está refletindo as tendências subjacentes e, portanto, uma correção é iminente. Realizamos uma etapa de otimização ao longo do ano de 2023, assim como nos dois padrões acima, utilizando o par EUR JPY no período gráfico de 12 minutos, e configurações favoráveis dessa otimização nos fornecem os seguintes resultados:

r2

Assim, o padrão-2 decorre de baixo volume e falta de liquidez, o que frequentemente leva a sinais não confiáveis. Como regra, o ruído de curto prazo proveniente de certos picos de volume devido a eventos de notícias ou manipulação de mercado pode levar a sinais enganosos do MFI. Além disso, em situações em que o padrão Fake está simplesmente corrigindo um pullback dentro de uma tendência maior, ele pode servir como um forte sinal de continuação da tendência. Confiar exclusivamente no MFI sem um indicador de suporte pode resultar não apenas em muitas operações, mas também em perdas. Portanto, além do indicador de MA que estamos combinando com o MFI na determinação do padrão-2, um indicador alternativo, como um canal de preços, pode ser usado para filtrar padrões falsos que tendem a ser indicados com frequência em tendências muito fortes na forma de pullbacks.

Além de indicadores de canal, como as Bandas de Bollinger, padrões de candles com níveis de suporte/resistência podem ser empregados. E, como sempre, é importante, com padrões de baixa probabilidade como este, aguardar confirmação e utilizar períodos de tempo mais altos na análise.


Padrão Squat

Nosso padrão-3, o padrão squat, ocorre quando o MFI oscila excessivamente ou se achata apesar de um movimento de preço significativo ou de volatilidade. É um sinal de indecisão no mercado, onde as pressões de compra e venda estão praticamente equilibradas, fazendo com que o mercado “agache” antes que um rompimento ou reversão aconteça.

Marcado pela cor marrom, nós o implementamos em MQL5 da seguinte forma:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBrown)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) <= MA(X()+1) && Close(X()) >= MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) >= MA(X()+1) && Close(X()) <= MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Como podemos ver na listagem acima, o primeiro pré-requisito para esse padrão são histogramas marrons do MFI que, conforme definido nas fórmulas da introdução, são marcados por queda do MFI e queda do volume. Um possível padrão de alta, portanto, com esse pano de fundo significativo de incerteza, seria sinalizado pelo primeiro histograma marrom do MFI e pelo cruzamento do preço de baixo para cima da média móvel, fechando acima dela.

Por outro lado, um padrão de baixa também exigiria um histograma marrom do MFI, mas o preço cruzaria a MA de cima para baixo, fechando abaixo dela. Assim como nos padrões 0–2 acima, se realizarmos uma etapa de otimização apenas para esse padrão, atribuindo à entrada Bitmap Used o valor de 2 elevado à potência 3 (8), somos apresentados aos resultados abaixo a partir de algumas configurações de entrada favoráveis:

r3

O padrão-3 é resultado da compressão de volume que frequentemente ocorre em períodos de diminuição do volume de negociação, o que indica falta de convicção do mercado. O padrão squat normalmente precede um movimento significativo de preço, pois o mercado geralmente está em transição de consolidação para uma nova tendência. Com bastante frequência, antecedendo o padrão squat, ocorrem fases de acumulação e distribuição, nas quais traders e instituições podem estar acumulando ou distribuindo posições para criar um equilíbrio entre compradores e vendedores.

Esses períodos de baixa volatilidade também podem ser resultado de momentos em que os mercados aguardam um catalisador, como divulgações de dados econômicos ou eventos geopolíticos. Assim, essas regiões marrons do MFI podem ser entendidas como zonas de transição, já que normalmente ocorrem e ajudam a definir regiões cruciais de suporte/resistência na ação do preço. As implicações disso são amplas; principalmente, elas sinalizam volatilidade iminente, já que o squat é frequentemente interpretado como o mercado se comprimindo e se preparando para um rompimento. Embora a direção do rompimento em si não seja prevista pelo squat, combiná-lo com outros indicadores e até mesmo com a ação do preço, como fizemos em nossa implementação em MQL5 acima, pode ajudar a identificar a próxima direção.

O padrão-3 também oferece uma boa oportunidade para definir níveis de stop-loss apertados próximos a extremos recentes de preço, o que ajuda a minimizar o risco. Possíveis estratégias alternativas de entrada que podem ser desenvolvidas a partir dele, além da nossa implementação, podem se concentrar principalmente na filtragem de sinais falsos. Por exemplo, ao aguardar um aumento no volume após um rompimento de preço, estaríamos confiando em dois sinais, e não apenas na ação do preço.


Padrão de Divergência

Nosso padrão-4 é baseado em divergência entre o MFI e a ação de preço predominante. Como já estabelecemos que o MFI mede o movimento de preço por unidade de volume, revelando assim quão eficientemente os mercados absorvem liquidez, sua direção nesse contexto pode gerar certa confusão. As tendências de preço são binárias do nosso ponto de vista, o que significa que estamos considerando tendências de alta ou tendências de baixa, portanto essa parte é direta.

No entanto, quando se trata do MFI, um aumento em magnitude não pode servir a nenhum propósito neste caso, porque ou não divergiria de uma tendência de alta (ou seja, preços em alta estariam paralelos a um MFI em alta) ou mesmo em um movimento forte de baixa, já que estaria refletindo o mesmo. Se, por outro lado, observarmos uma queda no MFI, podemos ver facilmente que qualquer tendência predominante no mercado marcaria uma divergência em relação a ele.

Se mínimas mais baixas estiverem sendo formadas com MFI em queda, isso marcaria uma divergência entre fortes tendências de baixa e um MFI fraco. Por outro lado, se máximas mais altas estiverem sendo formadas, isso também marcaria uma divergência com um MFI em queda, já que estaria apontando para faixas de preço decrescentes enquanto os preços continuariam avançando. Portanto, implementamos isso em MQL5 da seguinte forma:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X()+1) > Low(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()+1) < High(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   return(false);
}

A partir da listagem acima, nesta ocasião não buscamos nenhum código de cor; no entanto, conforme argumentado anteriormente, simplesmente procuramos mínimas mais baixas para marcar um sinal de alta e máximas mais altas para marcar um sinal de baixa. E, como já mencionado, o MFI deve estar em queda em ambos os casos. Após uma etapa de otimização, assim como nos padrões anteriores, obtemos o seguinte relatório a partir de algumas das entradas favoráveis da otimização:

r4

O componente de volume do MFI parece formar o cerne deste padrão. Isso ocorre porque divergências acompanhadas por volume decrescente frequentemente fortalecem os sinais de reversão e, em teoria, esse é um argumento sólido. No entanto, no nosso caso, estamos explorando volume crescente ou constante, mas com faixas de preço em queda, conforme indicado no valor absoluto do MFI. Embora isso possa parecer algo novo, nossos resultados de teste acima são promissores. Ainda assim, os leitores sempre podem modificar o código-fonte anexado e experimentar MFI crescente tanto para máximas mais altas quanto para mínimas mais baixas, para as configurações de baixa e alta, respectivamente.

Também é frequentemente recomendado combinar este padrão, o padrão-4, com outros indicadores de Bill Williams, como o Awesome Oscillator ou o Accelerator Oscillator. Além disso, quando há confluência com a estrutura de preço, por exemplo, suporte/resistência, a confiabilidade desse padrão é significativamente aumentada. Também é importante observar que, em mercados de forte tendência, as divergências geralmente levam a correções em vez de reversões completas. Por outro lado, em mercados lateralizados, a divergência do MFI pode ser mais confiável. Como já argumentado acima, elementos adicionais como o posicionamento de stop loss também podem ser melhor gerenciados com este padrão.


Sinal de Rompimento

O padrão-5 é semelhante ao padrão-1, com a ressalva de que estamos procurando por um rompimento. Portanto, ele é direto, e sua implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) < MA(X()+1) && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) > MA(X()+1) && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Como é evidente na listagem acima, apenas adicionamos a verificação do cruzamento da MA na definição deste padrão. Uma execução de teste com configurações de entrada selecionadas a partir de uma etapa de otimização semelhante à que fizemos com os padrões acima nos apresenta o seguinte relatório:

Quando o preço rompe um nível-chave (seja suporte ou resistência) juntamente com uma barra verde do MFI, isso frequentemente marca um rompimento válido. A definição rigorosa de níveis-chave de suporte/resistência costuma ser mais evidente na negociação manual do que na automação de uma estratégia. É por isso que, ao aplicar estritamente este padrão, pode-se optar por fazer modificações ativo por ativo. Apesar da natureza de alta probabilidade dessa configuração, ela ainda pode carecer de suporte de volume, o que pode representar um risco de movimentos falsos.

A “falta de volume” decorre da fórmula do MFI que compartilhamos na introdução no início deste artigo, onde mostramos que o componente de volume da fórmula está no denominador; portanto, uma elevação do MFI, embora represente um histograma verde, pode não ter um aumento proporcional no volume. Combiná-lo com Bandas de Bollinger pode, portanto, ir além ao fornecer uma certa proteção contra rompimentos com déficit de volume que podem levar a sinais falsos.

Além disso, o uso de Fractais ou RSI pode ajudar a validar se o momentum está alinhado com o rompimento ou cruzamento.


Continuação de Tendência

Nosso padrão-6 serve como uma extensão do padrão-5, exigindo duas barras verdes consecutivas do MFI, em vez de apenas uma, como exigido acima. Esse requisito de duas barras abrange tanto configurações de alta quanto de baixa. Assim, além disso, um padrão de alta é definido pelo preço de fechamento cruzando acima da MA, enquanto um padrão de baixa é marcado pelo preço de fechamento seguindo na direção oposta. Implementamos isso em MQL5 da seguinte forma:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(Color(X()+1) == clrGreen && Color(X()) == clrGreen)
   {  if(T == POSITION_TYPE_BUY && Close(X()+1) > MA(X()+1) && Close(X()) > MA(X()))
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && Close(X()+1) < MA(X()+1) && Close(X()) < MA(X()))
      {  return(true);
      }
   }
   return(false);
}

Uma execução de otimização com configurações semelhantes às dos padrões já abordados acima nos fornece o seguinte relatório:

Por ser uma extensão simples do padrão-5, tende a incluir as observações já abordadas sobre interpretação e as limitações do padrão


Configuração de Negociação em Faixa

Nosso oitavo e último padrão, o padrão-7, busca capitalizar a fase de consolidação marrom do MFI ao combiná-la com o RSI. O que estamos chamando de negociação em faixa é uma forma de se preparar para rompimentos de volatilidade, como já argumentado acima no padrão-3. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(Color(X()) == clrBrown)
   {  if(T == POSITION_TYPE_BUY && RSI(X()+1) <= 30.0 && RSI(X()) >= 30.0)
      {  return(true);
      }
      else if(T == POSITION_TYPE_SELL && RSI(X()+1) >= 70.0 && RSI(X()) <= 70.0)
      {  return(true);
      }
   }
   return(false);
}

Com base em uma barra marrom do MFI, procuramos um padrão de alta se o RSI cruzar de baixo do nível 30 para fechar acima dele. Da mesma forma, um padrão de baixa seria interpretado se o RSI cruzar de cima do nível 70 para fechar abaixo dele. Testar apenas este padrão exige que a entrada para bitmaps utilizados seja 128 (2^7), e uma execução de otimização apenas para este padrão nos fornece o seguinte relatório:

r7

Argumentei que é melhor para os traders testar um padrão de cada vez e depois selecionar apenas um (ou no máximo dois) para uso em testes adicionais ou implantação. Tentar testar todos os padrões pode produzir resultados mais difíceis de validar adiante, porque, nesse processo, muitos dos padrões individuais acabam se cancelando mutuamente, e assim o verdadeiro desempenho de cada um se perde. Ainda assim, apenas para fins informativos, tentamos otimizar os limiares para todos os padrões enquanto buscamos simultaneamente um bitmap de padrões utilizados que maximizasse nosso objetivo de teste. Fizemos isso e os resultados de algumas das melhores configurações são apresentados abaixo:

r_oll

c_oll



Conclusão

Examinamos mais um indicador de Bill Williams, o Índice de Facilitação de Mercado, com base em padrões, como tem sido nossa prática nestes artigos. Embora não seja um indicador muito comum e também claramente do tipo que precisa ser usado em conjunto com outros indicadores para gerar sinais, ele pode fornecer uma vantagem para traders que procuram algo fora do comum, além dos indicadores muito utilizados.

Nome do Arquivo Descrição
SignalWZ_53.mqh Arquivo de Classe de Sinal Personalizada
wz_53.mq5 Expert Advisor montado pelo assistente com cabeçalho mostrando os arquivos utilizados

Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/17065

Arquivos anexados |
SignalWZ_53.mqh (17.07 KB)
wz_53.mq5 (7.41 KB)
Últimos Comentários | Ir para discussão (5)
Daniel Opoku
Daniel Opoku | 11 mar. 2025 em 13:51

Obrigado pela informação sobre a MFI. Vou revisitar e testar novamente. Qual foi sua relação risco-recompensa ao testar essa estratégia?

.

Too Chee Ng
Too Chee Ng | 18 mar. 2025 em 23:22
Ótimo artigo. Muito obrigado.
Too Chee Ng
Too Chee Ng | 11 abr. 2025 em 11:22
Com relação ao seguinte:
//+------------------------------------------------------------------+
//| Verificação do padrão 4.|
//+------------------------------------------------------------------+
bool CSignalMFI::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Low(X()+1) > Low(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && High(X()+1) < High(X()) && MFI(X()+1) > MFI(X()))
   {  return(true);
   }
   return(false);
}
Parece que o trecho destacado
MFI(X()+1) > MFI(X()

é questionável (especialmente em comparação com o algoritmo de outros padrões)!

Poderia ser um deles:

MFI(X()+1) < MFI(X()
Daniel Opoku
Daniel Opoku | 24 abr. 2025 em 08:19
Too Chee Ng #:
Com relação ao seguinte:
Parece que o algoritmo destacado

é questionável (especialmente em comparação com o algoritmo de outros padrões)!

Um deles poderia ser:

MFI(X()+1) < MFI(X()

O autor quer dizer que, para que a condição seja válida, o MFI anterior deve ser maior que o MFI atual em ambos os casos.

MFI(X()+1) > MFI(X()

Nesse caso, ele está medindo;

diminuição da força do MFI, mas aumento da mínima inferior em uma tendência de baixa

 MFI(X()+1) > MFI(X()  &&  Low(X()+1) > Low(X()) 

diminuição da força da MFI, mas aumento da máxima mais alta na tendência de alta .

 MFI(X()+1) > MFI(X() &&  High(X()+1) < High(X()) 
Espero que isso ajude.
Too Chee Ng
Too Chee Ng | 29 abr. 2025 em 09:18
Daniel Opoku #:

O autor quer dizer que, para que a condição seja válida, o MFI anterior deve ser maior do que o MFI atual em ambos os casos.

Nesse caso, ele está medindo;

diminuição da força do MFI, mas aumento da mínima inferior em uma tendência de baixa

diminuição da força da MFI, mas aumento da máxima mais alta na tendência de alta .

Espero que isso ajude.

Obrigado por sua explicação.

Sim, faz sentido.

Previsão de Tendência com LSTM para Estratégias de Seguimento de Tendência Previsão de Tendência com LSTM para Estratégias de Seguimento de Tendência
Memória de Curto e Longo Prazo (LSTM) é um tipo de rede neural recorrente (RNN) projetada para modelar dados sequenciais, capturando de forma eficaz dependências de longo prazo e resolvendo o problema do gradiente desvanecente. Neste artigo, exploraremos como utilizar LSTM para prever tendências futuras, aprimorando o desempenho de estratégias de seguimento de tendência. O artigo abordará a introdução de conceitos-chave e a motivação por trás do desenvolvimento, a obtenção de dados do MetaTrader 5, o uso desses dados para treinar o modelo em Python, a integração do modelo de aprendizado de máquina no MQL5 e a reflexão sobre os resultados e aspirações futuras com base em backtesting estatístico.
EA autoaprendente com rede neural baseada em matriz de estados EA autoaprendente com rede neural baseada em matriz de estados
EA autoaprendente com rede neural baseada em matriz de estados. Combinamos cadeias de Markov com uma rede neural multicamadas MLP, escrita com a biblioteca ALGLIB MQL5. Como cadeias de Markov e redes neurais podem ser combinadas para a previsão no Forex?
Está chegando o novo MetaTrader 5 e MQL5 Está chegando o novo MetaTrader 5 e MQL5
Esta é apenas uma breve resenha do MetaTrader 5. Eu não posso descrever todos os novos recursos do sistema por um período tão curto de tempo - os testes começaram em 09.09.2009. Esta é uma data simbólica, e tenho certeza que será um número de sorte. Alguns dias passaram-se desde que eu obtive a versão beta do terminal MetaTrader 5 e MQL5. Eu ainda não consegui testar todos os seus recursos, mas já estou impressionado.
Redes neurais em trading: Generalização de séries temporais sem vínculo com dados (Conclusão) Redes neurais em trading: Generalização de séries temporais sem vínculo com dados (Conclusão)
Este artigo permitirá que você veja como o Mamba4Cast transforma a teoria em um algoritmo de trading funcional e prepara o terreno para seus próprios experimentos. Não perca a oportunidade de obter um espectro completo de conhecimento e inspiração para o desenvolvimento da sua própria estratégia.