English Русский 中文 Español Deutsch 日本語
preview
Recursos do Assistente MQL5 que você precisa conhecer (Parte 73): Uso de padrões do Ichimoku e do ADX-Wilder

Recursos do Assistente MQL5 que você precisa conhecer (Parte 73): Uso de padrões do Ichimoku e do ADX-Wilder

MetaTrader 5 — Testador |
19 2
Stephen Njuki
Stephen Njuki

Introdução

Utilizamos o indicador Ichimoku e o oscilador ADX-Wilder (ADX) para identificar níveis de suporte e resistência, além da tendência do mercado. O Ichimoku é, sem dúvida, um indicador bastante versátil, capaz de fornecer muito mais informações do que apenas os níveis de suporte e resistência. Por enquanto, porém, vamos nos concentrar nessa aplicação. A combinação de indicadores, especialmente quando eles se complementam, pode proporcionar sinais de entrada mais precisos e eficazes para os EAs. Como de costume, analisaremos dez padrões de sinal baseados nessa combinação. Testaremos cada um deles separadamente, atribuindo um índice a cada padrão e seguindo as seguintes regras:

Os índices variam de 0 a 9, o que facilita o cálculo da máscara de bits necessária para utilizar cada padrão individualmente no EA. Por exemplo, se um padrão tiver índice 1, devemos definir o parâmetro PatternsUsed como 2 elevado à potência de 1, ou seja, 2. Se o índice for 4, teremos 2 elevado à quarta potência, resultando em 16, e assim por diante. O valor máximo que pode ser atribuído a esse parâmetro é 1023, pois temos apenas dez parâmetros. Qualquer valor entre 0 e 1023 que não seja uma potência exata de 2 representará uma combinação de mais de um desses dez padrões.

Em artigos anteriores, demonstramos por que o treinamento ou a otimização com vários sinais o treinamento ou a otimização com vários sinais está fadado ao fracasso, apesar dos resultados frequentemente otimistas obtidos nos testes. Isso acontece porque, quando mais de um sinal está ativo, eles geralmente acabam neutralizando involuntariamente as operações geradas pelos demais sinais em momentos que favorecem a maximização dos lucros durante o período limitado de teste. Uma possível solução seria realizar testes com janelas temporais mais longas. No entanto, como neste artigo trabalhamos com uma janela de teste de apenas um ano, essa alternativa não atende aos nossos objetivos.



Ichimoku

Por definição, o Ichimoku é um indicador técnico abrangente que combina vários componentes para avaliar a direção da tendência, o momentum e os níveis de suporte e resistência. Seu nome, traduzido como "sistema universal", reflete a proposta de oferecer uma visão integrada do comportamento dos preços. Também é frequentemente utilizado em estratégias de acompanhamento de tendência. O indicador possui cinco buffers: Tenkan-sen, Kijun-sen, Senkou Span A, Senkou Span B e, por fim, Chikou Span. Além desses buffers, também é comum mencionar a nuvem Kumo (Kumo Cloud), formada pelas duas linhas Senkou Span A e Senkou Span B. À primeira vista, essa nuvem pode funcionar como uma região de suporte ou resistência, enquanto sua espessura também permite inferir a força da tendência.

Para calcular os cinco buffers, são necessários três parâmetros de entrada, normalmente definidos como 9, 26 e 52. Em teoria, esses valores podem ser ajustados para diferentes mercados, mas provavelmente é melhor manter esses períodos sem alterações e ajustar outros aspectos do sistema. A partir desse indicador, é possível tirar diversas conclusões, incluindo os cruzamentos entre as linhas Tenkan-sen e Kijun-sen, além dos sinais de confirmação da Chikou Span, como veremos adiante. Dessa forma, o Ichimoku é bastante versátil e pode ser aplicado a diferentes ativos, desde ações e moedas até criptomoedas, em diversos timeframes.

Vamos agora examinar as fórmulas básicas dos cinco buffers, começando pela Tenkan-sen, calculada da seguinte forma:

= (Highest High + Lowest Low) / 2

onde:

  • Highest High (máxima) corresponde ao maior preço registrado nos últimos 9 períodos.
  • Lowest Low (mínima) corresponde ao menor preço registrado nos últimos 9 períodos.

A Tenkan-sen funciona como um indicador de tendência de curto prazo. Por ser sensível às variações de preço, ajuda a identificar as condições do mercado nesse horizonte. A Kijun-sen é calculada de maneira semelhante:

= (Highest High + Lowest Low) / 2

onde:

  • Highest High corresponde ao maior preço registrado nos últimos 26 períodos.
  • Lowest Low corresponde ao menor preço registrado nos últimos 26 períodos.

Sua função é indicar a tendência de médio prazo e atuar como nível de suporte ou resistência. Em seguida, temos a Senkou Span A, cuja fórmula é:

= (Tenkan-sen + Kijun-sen) / 2

onde:

  • Tenkan-sen e Kijun-sen correspondem, respectivamente, aos valores da linha de conversão e da linha de base, cujas fórmulas foram apresentadas acima.

A principal função desse buffer é formar uma das bordas da nuvem Kumo, um importante elemento do Ichimoku para identificar níveis de suporte e resistência. Em seguida, temos a Senkou Span B. Seu cálculo também é semelhante ao da Tenkan-sen, diferenciando-se apenas pelo período utilizado:

= (Highest High + Lowest Low) / 2

onde:

  • Highest High corresponde ao maior preço registrado nos últimos 52 períodos.
  • Lowest Low corresponde ao menor preço registrado nos últimos 52 períodos.

Sua função é complementar a Senkou Span A, formando a segunda borda da nuvem Kumo. O período mais longo também faz dessa linha uma referência de suporte ou resistência de longo prazo. Por fim, temos a Chikou Span, o último buffer do indicador, definida da seguinte forma:

= Current period’s close (preço de fechamento do período atual)

onde:

  • O preço de fechamento do período atual é representado no gráfico com um deslocamento de 26 períodos para trás.

A função da Chikou Span é confirmar tendências por meio da comparação entre os preços passados e as condições atuais do mercado. Outro componente que merece destaque, como já mencionamos, é a nuvem Kumo. Ela corresponde à região entre a Senkou Span A e a Senkou Span B. Quando A está acima de B, temos uma nuvem Kumo de alta; quando A está abaixo de B, a nuvem é de baixa. A nuvem Kumo ajuda a visualizar a força da tendência e os níveis de suporte e resistência.



ADX-Wilder

O segundo indicador utilizado neste artigo mede a força da tendência predominante, mas não sua direção. No entanto, além do buffer principal, ele possui outros dois buffers que podem ser utilizados para avaliar o momentum de alta e de baixa. Em geral, o valor do buffer principal do ADX varia de 0 a 100. Entretanto, raramente ultrapassa 25 e, quando isso acontece, é considerado um sinal de que a tendência predominante é forte. Valores abaixo de 20 indicam uma tendência fraca. O ADX é um indicador defasado que normalmente utiliza um período de 14 barras em seus cálculos. Também pode ser aplicado a diferentes classes de ativos. Os cruzamentos entre +DI e -DI podem servir como sinais secundários para indicar a direção da tendência, enquanto o buffer principal do ADX confirma sua força.

O ADX-Wilder possui três buffers de saída, embora seus cálculos envolvam até seis grandezas. São elas: o movimento direcional positivo (+DM) e o indicador direcional positivo (+DI), o movimento direcional negativo (-DM) e o indicador direcional negativo (-DI), a amplitude verdadeira e, por fim, o buffer principal do ADX. Vamos examinar as fórmulas de cada uma delas. Começaremos pelo movimento direcional positivo (+DM):

= Current High - Previous High

onde:

  • O movimento direcional positivo (+DM) corresponde a Current High - Previous High quando essa diferença é positiva e maior que Previous Low - Current Low. Caso contrário, seu valor é zero.

Esse componente acompanha os movimentos de alta dos preços. O próximo é o movimento direcional negativo (-DM), calculado pela fórmula:

= Previous Low - Current Low

onde:

  • O movimento direcional negativo (-DM) corresponde a Previous Low - Current Low quando essa diferença é positiva e maior que Current High - Previous High. Caso contrário, seu valor é zero.

Esse componente mede os movimentos de baixa dos preços. Depois de determinar os movimentos direcionais, podemos calcular a amplitude verdadeira (True Range, TR), utilizando a seguinte fórmula:

= Max[(Current High - Current Low), |Current High - Previous Close|, |Current Low - Previous Close|]

onde:

  • Max corresponde ao maior valor entre as três diferenças apresentadas acima.

A principal função da amplitude verdadeira é medir a volatilidade dos preços. Com os movimentos direcionais e a amplitude verdadeira definidos, podemos passar aos buffers do indicador. O primeiro é o indicador direcional positivo, calculado pela seguinte fórmula:

= (Smoothed +DM / Smoothed TR) × 100

onde:

  • Smoothed +DM (+DM suavizado) corresponde à média móvel exponencial do movimento direcional positivo definido anteriormente.
  • Smoothed TR (TR suavizado) corresponde à média móvel exponencial da amplitude verdadeira.

O +DI indica a força do movimento de alta. O -DI é calculado pela seguinte fórmula:

= (Smoothed -DM / Smoothed TR) × 100

onde:

  • Smoothed -DM (-DM suavizado) também corresponde à média móvel exponencial do movimento direcional negativo, cuja fórmula foi apresentada anteriormente.
  •  

Os buffers dos indicadores +DI e -DI normalmente utilizam um período de 14 barras. A função do indicador -DI é medir a força do movimento de baixa. Depois de definir esses dois buffers, passamos ao buffer principal do ADX, calculado pela seguinte fórmula:

= smoothed[(|+DI - -DI| / (+DI + -DI)) × 100]

onde:

  • A suavização consiste em calcular a média exponencial dos valores produzidos pela fórmula ao longo de 14 períodos.
  • O indicador +DI corresponde ao buffer que mede a força do movimento de alta, definido anteriormente, e não ao movimento direcional positivo (+DM).
  • Da mesma forma, o indicador -DI corresponde ao indicador direcional negativo, que mede a força do movimento de baixa.
  • O valor antes da suavização é denominado DX.

O DX suavizado, ou ADX, tem como objetivo quantificar a força da tendência. Agora que conhecemos os dois indicadores, podemos passar à análise dos dez padrões utilizados neste artigo. Como de costume, os testes serão realizados com dados de 2023, enquanto 2024 será utilizado como período de teste forward. No entanto, desta vez utilizaremos o timeframe de 30 minutos, em vez do habitual de 4 horas, pois o Ichimoku não gera sinais suficientes durante um ano, que é nosso período padrão de teste. Os testes serão realizados no GBPUSD.



Cruzamento da Senkou Span A pelo preço com confirmação do ADX

Como de costume, começaremos pelo padrão 0. A nomenclatura utilizada segue o formato "padrão x", em que x representa o índice do padrão, e não sua posição na sequência. Conforme mencionado na introdução, damos ênfase aos índices porque eles facilitam a definição dos valores dos parâmetros de entrada, permitindo testar cada padrão separadamente. O sinal de alta do padrão 0 ocorre quando o preço cruza a Senkou Span A de baixo para cima, indicando um rompimento acima da Senkou Span A, que também representa um rompimento da nuvem Kumo quando essa linha constitui seu limite superior. Em geral, esse movimento deve ser confirmado por uma leitura consistente do ADX de pelo menos 25. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X() + 1) < Ichimoku_SenkouSpanA(X() + 1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Ichimoku_SenkouSpanA(X() + 1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   return(false);
}

O padrão de baixa, por sua vez, ocorre quando o preço cruza a Senkou Span A e fecha abaixo dessa linha. Isso indica um rompimento abaixo da Senkou Span A. O rompimento da nuvem Kumo ocorre quando o preço também ultrapassa seu limite inferior, enquanto a força da tendência deve ser confirmada pelo ADX. A combinação do rompimento da nuvem do Ichimoku com a confirmação da força da tendência pelo ADX torna esse sinal confiável. Esse padrão apresenta melhor desempenho em mercados com tendência definida, não sendo adequado a períodos de grande turbulência. Após os testes realizados apenas com dados de 2023, executamos novos testes abrangendo os dois anos, de 2023 a 2024, que produziram o seguinte relatório:

r0

O teste inicial de 2023 apresentou resultados bastante instáveis, embora tenha registrado um pequeno lucro. Curiosamente, o teste forward também produziu uma curva de equity com comportamento semelhante, mantendo um resultado positivo. Recomenda-se utilizar esse padrão após confirmar o alinhamento da tendência em timeframes mais altos, antes de tomar uma decisão de entrada. Exigir um ADX de pelo menos 25 é fundamental para filtrar sinais fracos. O Stop Loss pode ser posicionado abaixo da nuvem Kumo nas operações de compra e acima dela nas operações de venda. Também é essencial monitorar a ocorrência de falsos sinais.



Cruzamento Tenkan-sen/Kijun-sen com confirmação do ADX

Nosso próximo padrão baseia-se no cruzamento entre as linhas Tenkan-sen e Kijun-sen, calculadas a partir dos pontos médios das respectivas faixas de preço, com confirmação do sinal pelo ADX. Quando a Tenkan-sen cruza a Kijun-sen de baixo para cima e permanece acima dela no fechamento da barra, isso indica uma mudança de curto prazo no momentum em favor dos compradores. O ADX deve apresentar um valor de pelo menos 20. A implementação da função de verificação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Ichimoku_TenkanSen(X() + 1) < Ichimoku_KijunSen(X() + 1) && Ichimoku_TenkanSen(X()) > Ichimoku_KijunSen(X()) && ADX(X()) >= 20.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Ichimoku_TenkanSen(X() + 1) > Ichimoku_KijunSen(X() + 1) && Ichimoku_TenkanSen(X()) < Ichimoku_KijunSen(X()) && ADX(X()) >= 20.0)
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando a Tenkan-sen cruza a Kijun-sen de cima para baixo e permanece abaixo dela no fechamento da barra, indicando uma mudança do momentum em favor dos vendedores. Trata-se, essencialmente, de um sinal antecipado de reversão da tendência fornecido pelo Ichimoku e complementado pelo ADX. Esse sinal pode ser utilizado em contextos como o início de uma tendência ou a formação de um ponto fractal. O método não é adequado para mercados laterais. O relatório de teste do padrão é apresentado a seguir:

r1

O padrão claramente não passou no teste forward. Isso pode estar relacionado ao uso de alvos de preço fixos e à ausência de Stop Loss. Esses são parâmetros que o leitor pode ajustar para adaptar a estratégia a diferentes condições de negociação. Além disso, ao utilizar esse padrão, as operações devem seguir a direção da tendência observada em timeframes mais altos. O limite mínimo de 20 para o ADX tem como objetivo filtrar cruzamentos fracos. O Stop Loss pode ser posicionado abaixo da Kijun-sen nas operações de compra e acima dela nas operações de venda. A combinação com indicadores de volume pode proporcionar uma confirmação adicional.



Cruzamento Senkou Span A/B com confirmação do ADX

O padrão 2 baseia-se na mudança de configuração da nuvem Kumo, provocada pelo cruzamento entre suas duas linhas. O sinal de alta ocorre quando a Senkou Span A cruza a Senkou Span B de baixo para cima, formando uma nuvem de alta. Esse cruzamento deve ocorrer com o ADX em pelo menos 25. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Ichimoku_SenkouSpanA(X() + 1) < Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Ichimoku_SenkouSpanA(X() + 1) > Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando a Senkou Span A cruza a Senkou Span B de cima para baixo e permanece abaixo dela no fechamento da barra. Isso indica a formação de uma nuvem de baixa. Trata-se de um sinal de mudança da tendência de longo prazo, que também pode servir como confirmação adicional da tendência. Esse sinal pode ser útil para swing traders que operam em mercados com tendência definida. Os resultados dos testes são apresentados abaixo:

r2

O padrão 2 aparentemente apresentou bom desempenho no teste forward. Como sempre, os resultados se baseiam em um período limitado de teste, de apenas um ano. Por isso, recomendamos que os leitores realizem testes adicionais ao explorar as ideias apresentadas aqui. Para o padrão 2, vale considerar a confirmação pelo cruzamento das linhas da nuvem em timeframes mais altos. O limite mínimo de 25 para o ADX é fundamental para filtrar sinais fracos. O Stop Loss pode ser posicionado abaixo da nuvem nas operações de compra e acima dela nas operações de venda. Deve-se evitar operar com esse padrão quando a nuvem Kumo estiver fina.



Repique do preço na nuvem Kumo com confirmação do ADX e DI

O padrão 3 considera o comportamento do preço nas proximidades da nuvem Kumo. O sinal de alta ocorre quando o preço encontra suporte na borda superior da nuvem e reage para cima. A borda superior da nuvem corresponde à Senkou Span A quando ela está acima da Senkou Span B; caso contrário, corresponde à Senkou Span B. Além disso, o ADX deve estar em pelo menos 25, e o indicador direcional positivo (+DI) deve apresentar um valor superior ao do indicador direcional negativo (-DI). A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) &&
      Close(X() + 2) > Ichimoku_SenkouSpanA(X() + 2) && Close(X()) > Ichimoku_SenkouSpanA(X()) && 
      Close(X() + 1) <= Ichimoku_SenkouSpanA(X() + 1) && 
      ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) &&
      Close(X() + 2) < Ichimoku_SenkouSpanA(X() + 2) && Close(X()) < Ichimoku_SenkouSpanA(X()) && 
      Close(X() + 1) >= Ichimoku_SenkouSpanA(X() + 1) && 
      ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando o preço é rejeitado na borda inferior da nuvem, representada pela Senkou Span A quando ela está abaixo da Senkou Span B, ou pela Senkou Span B na situação contrária, formando uma reversão de baixa, com trajetória semelhante a um U invertido. Além disso, o ADX deve apresentar um valor de pelo menos 25, e o indicador direcional negativo (-DI) deve estar acima do positivo (+DI). O padrão 3 oferece um forte sinal de suporte ou resistência, acompanhado da confirmação da direção do movimento. Esse padrão é mais adequado para mercados em transição de uma fase lateral para uma tendência definida. Como essa transição pode ser difícil de identificar, realizamos várias verificações por meio de filtros antes de confirmar o sinal. Os resultados dos testes do padrão 3 são apresentados a seguir:

r3

O padrão passou no teste forward, embora por pouco. Ao utilizar o padrão 3, é sempre recomendável confirmar o repique por meio de padrões de candles, como os pin bars. A predominância do +DI sobre o -DI, ou vice-versa, deve corresponder à direção da tendência dos preços. O Stop Loss pode ser posicionado um pouco abaixo da Senkou Span B nas operações de compra e um pouco acima dela nas operações de venda.



Chikou Span em relação à Senkou Span A com confirmação do ADX

O padrão 4 utiliza a Chikou Span, o quinto buffer do indicador Ichimoku. O sinal de alta ocorre quando a Chikou Span está acima da Senkou Span A. Como mencionado na introdução, a Chikou Span normalmente é deslocada 26 períodos para trás. Do ponto de vista da programação, isso significa que, ao acessar o buffer Chikou do indicador Ichimoku integrado ao MQL5, precisamos compensar manualmente o deslocamento de 26 períodos ao ler os valores do buffer Chikou. Caso contrário, obteremos valores NaN. Portanto, além de a Chikou Span estar acima da Senkou Span A, o ADX deve ser superior a 25. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Ichimoku_ChinkouSpan(X() + 26) > Ichimoku_SenkouSpanA(X()) &&  
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Ichimoku_ChinkouSpan(X() + 26) < Ichimoku_SenkouSpanA(X()) &&  
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando a Chikou Span está abaixo da Senkou Span A, com o ADX permanecendo em pelo menos 25. Nesse caso, porém, a Senkou Span A deve estar abaixo da Senkou Span B, ao contrário do sinal de alta, em que a Senkou Span A fica acima da Senkou Span B. Esse sinal funciona como uma confirmação defasada da força da tendência, sendo mais adequado para confirmar tendências já estabelecidas. Os resultados do teste forward são apresentados a seguir:

r4

O padrão passou no teste forward. Os resultados parecem até melhores que os dos padrões 3 e 2. No entanto, seu uso para confirmar tendências pode ser mais eficaz do que para gerar sinais de entrada. Também é possível combiná-lo com outros sinais do Ichimoku, como os da nuvem Kumo. O Stop Loss pode ser definido com base nos topos e fundos locais recentes. O padrão 4 é adequado para mercados com tendência definida, mas não apresenta bom desempenho em mercados instáveis. Para ilustrar seu funcionamento, o gráfico abaixo mostra um sinal de alta do padrão 4.

p4



Repique do preço na Tenkan-sen com confirmação do ADX e DI

O próximo padrão analisa o comportamento do preço nas proximidades da Tenkan-sen e da nuvem Kumo, retomando a abordagem utilizada anteriormente. O sinal de alta ocorre quando o preço encontra suporte na Tenkan-sen e reage para cima, com o ADX em pelo menos 25 e o indicador direcional positivo (+DI) acima do indicador direcional negativo (-DI). A implementação do padrão em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) &&
      Close(X() + 2) > Ichimoku_TenkanSen(X() + 2) && Close(X()) > Ichimoku_TenkanSen(X()) && 
      Close(X() + 1) <= Ichimoku_TenkanSen(X() + 1) && 
      ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) &&
      Close(X() + 2) < Ichimoku_TenkanSen(X() + 2) && Close(X()) < Ichimoku_TenkanSen(X()) && 
      Close(X() + 1) >= Ichimoku_TenkanSen(X() + 1) && 
      ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando o preço é rejeitado pela Tenkan-sen, que atua como resistência, com o ADX também em pelo menos 25. Nesse caso, o indicador direcional negativo (-DI) deve apresentar um valor superior ao do indicador direcional positivo (+DI). Esse sinal serve para confirmar o momentum de curto prazo. É eficaz em mercados com tendência definida, especialmente durante movimentos de correção. Os resultados do teste forward são apresentados a seguir:

r5

Entre todos os padrões de sinal que testamos até agora com essa combinação de indicadores, este claramente não apresentou bons resultados. O padrão não passou no teste forward. Uma possível melhoria seria confirmar os sinais por meio da análise de candles. A verificação do alinhamento entre os indicadores direcionais já é realizada, mas podemos acrescentar valores-limite para reforçar a confirmação dos sinais. Também podemos incluir um Stop Loss, já que os testes foram realizados sem ele. Nas operações de compra, o Stop Loss pode ser posicionado abaixo da Tenkan-sen e, nas operações de venda, acima dela.



Cruzamento da Kijun-sen pelo preço com confirmação do ADX e DI

O padrão 6 utiliza os cruzamentos do preço com a Kijun-sen. O sinal de alta ocorre quando o preço cruza a Kijun-sen de baixo para cima e fecha acima dela. Além disso, o indicador direcional positivo (+DI) deve apresentar um valor superior ao do indicador direcional negativo (-DI), enquanto o ADX deve estar em pelo menos 25. A implementação do padrão em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 6.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_6(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
   Close(X() + 1) < Ichimoku_KijunSen(X() + 1) && 
   Close(X()) > Ichimoku_KijunSen(X()) && 
   ADX_Plus(X()) > ADX_Minus(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && 
   Close(X() + 1) > Ichimoku_KijunSen(X() + 1) && 
   Close(X()) < Ichimoku_KijunSen(X()) && 
   ADX_Plus(X()) < ADX_Minus(X()) && ADX(X()) >= 25.0)
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando o preço cruza a Kijun-sen de cima para baixo e fecha abaixo dela. Nesse caso, o indicador direcional negativo (-DI) deve superar o positivo (+DI), enquanto o buffer principal do ADX deve apresentar um valor de pelo menos 25. Trata-se de um sinal de tendência de médio prazo, com confirmação da direção do movimento. As condições mais adequadas para esse padrão são os mercados com tendências já estabelecidas. Os testes do padrão 6 produziram o seguinte relatório:

r6

Assim como o anterior, esse padrão também não passou no teste forward, embora seus resultados tenham sido um pouco melhores. Uma possível melhoria seria considerar a direção da nuvem Kumo em timeframes mais altos. Além de exigir um valor mínimo para o ADX e verificar o alinhamento entre os indicadores direcionais, podemos posicionar o Stop Loss abaixo da Kijun-sen nas posições de compra e acima dela nas posições de venda. Esse padrão também é mais adequado para mercados com tendência definida e deve ser evitado em períodos de lateralização.



Repique do preço na Senkou Span B com confirmação do ADX

O padrão 7 analisa o comportamento do preço na região da Senkou Span B. O sinal de alta ocorre quando o preço encontra suporte na Senkou Span B e reage para cima, enquanto o ADX está no nível de 20 e continua subindo. Nessa situação, a Senkou Span A está acima da Senkou Span B, fazendo desta última o limite inferior da nuvem Kumo. O repique ocorre dentro da nuvem quando o preço permanece entre as duas linhas. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             \
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_7(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Close(X() + 2) > Close(X() + 1) && Close(X() + 1) < Close(X()) &&
      Close(X() + 2) > Ichimoku_SenkouSpanB(X() + 2) && Close(X()) > Ichimoku_SenkouSpanB(X()) && 
      Close(X() + 1) <= Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 20.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Close(X() + 2) < Close(X() + 1) && Close(X() + 1) > Close(X()) &&
      Close(X() + 2) < Ichimoku_SenkouSpanB(X() + 2) && Close(X()) < Ichimoku_SenkouSpanB(X()) && 
      Close(X() + 1) >= Ichimoku_SenkouSpanB(X() + 1) && Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 20.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando o preço é rejeitado pela Senkou Span B, que atua como resistência, enquanto o ADX também está na região de 20 e continua subindo. Nesse caso, a Senkou Span B está acima da Senkou Span A, constituindo o limite superior da nuvem Kumo. A rejeição ocorre dentro da nuvem quando o preço permanece entre as duas linhas. Trata-se de um sinal baseado nos níveis de suporte e resistência da nuvem, adequado para correções profundas durante uma tendência. Os resultados do teste forward são apresentados a seguir:

r7

O padrão 7 apresentou resultados melhores que os dois anteriores. Ainda assim, há espaço para melhorias. A direção do movimento pode ser confirmada por meio de padrões de candles. Nesse caso, o Stop Loss deve ser posicionado estritamente abaixo da Senkou Span B nas operações de compra e estritamente acima dela nas operações de venda. Deve-se evitar utilizar esse padrão quando a nuvem Kumo estiver pouco espessa ou quando o ADX apresentar valores baixos.



Preço acima ou abaixo da nuvem com confirmação do ADX

O penúltimo padrão analisa o mercado em um contexto mais amplo, considerando a posição do preço em relação à nuvem Kumo. O sinal de alta ocorre quando o preço está acima da nuvem Kumo, com a Senkou Span A acima da Senkou Span B e o ADX em pelo menos 25. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_8(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Close(X() + 1) < Close(X()) &&
      Close(X() + 1) > Ichimoku_SenkouSpanA(X() + 1) && Close(X()) > Ichimoku_SenkouSpanA(X()) && 
      Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Close(X() + 1) > Close(X()) &&
      Close(X() + 1) < Ichimoku_SenkouSpanA(X() + 1) && Close(X()) < Ichimoku_SenkouSpanA(X()) && 
      Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando o preço está abaixo da nuvem Kumo, com a Senkou Span B acima da Senkou Span A. O buffer principal do ADX deve indicar uma tendência forte e estabelecida, apresentando um valor de pelo menos 25. Trata-se de um sinal simples de acompanhamento de tendência, com confirmação pelo ADX. É especialmente adequado para identificar a continuidade de uma tendência. O relatório do teste forward é apresentado a seguir:

r8

O padrão 8 provavelmente apresentou os melhores resultados entre todos os padrões testados neste artigo. Seu desempenho no período de teste forward foi superior ao obtido na etapa de testes. Vale ressaltar, mais uma vez, que o treinamento e os testes foram realizados em um período bastante limitado, algo que os leitores devem levar em consideração. Entre as possíveis melhorias para o padrão 8 está a avaliação da direção efetiva da tendência dos preços por meio de parâmetros baseados no delta de preço (variação do preço). Além disso, o Stop Loss pode ser posicionado a certa distância abaixo da nuvem nas posições de compra e acima dela nas posições de venda. Para ilustrar o funcionamento do padrão, o gráfico abaixo mostra um sinal de alta do padrão 8:

p8



Posição da Chikou Span em relação ao preço e à nuvem com confirmação do ADX

No último padrão, voltamos à Chikou Span, já utilizada no padrão 4, desta vez combinando-a com a nuvem Kumo. O sinal de alta ocorre quando a Chikou Span está acima do preço e também acima da Senkou Span A. Para confirmar a presença de uma tendência forte, o ADX deve apresentar um valor de pelo menos 25. A implementação em MQL5 é a seguinte:

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalIchimoku_ADXWilder::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && 
      Ichimoku_ChinkouSpan(X() + 26) > Ichimoku_SenkouSpanA(X()) &&
      //Ichimoku_ChinkouSpan(X() + 26) > Close(X()) && 
      Ichimoku_SenkouSpanA(X()) > Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL &&  
      Ichimoku_ChinkouSpan(X() + 26) < Ichimoku_SenkouSpanA(X()) &&
      //Ichimoku_ChinkouSpan(X() + 26) < Close(X()) && 
      Ichimoku_SenkouSpanA(X()) < Ichimoku_SenkouSpanB(X()) && 
      ADX(X()) >= 25.0
      )
   {  return(true);
   }
   return(false);
}

O sinal de baixa ocorre quando a Chikou Span está abaixo do preço e também abaixo da Senkou Span A. O ADX deve apresentar um valor de pelo menos 25. Esse sinal, ligeiramente defasado, confirma tanto a direção quanto a força da tendência. O padrão 9 é mais adequado para mercados com tendências fortes. Os resultados dos testes são apresentados a seguir:

r9

Embora esse padrão tenha acabado se tornando lucrativo durante o teste forward, seus resultados foram um pouco inferiores aos do padrão 8 e de alguns outros analisados anteriormente, como o padrão 4. Entre as possíveis melhorias está o uso de outros padrões do Ichimoku como confirmação adicional. Ao utilizar esse sinal, também é importante verificar se a configuração da nuvem Kumo está alinhada à direção da operação. O Stop Loss pode ser definido com base nos movimentos recentes do preço. Como já ressaltamos, esse padrão não é adequado para mercados laterais ou instáveis.



Conclusão

Apresentamos mais uma combinação de indicadores: o Ichimoku e o ADX-Wilder. Com base em um período limitado de dois anos de testes, essa combinação permitiu identificar sete padrões de sinal potencialmente lucrativos. A palavra "potencialmente" é importante, pois a janela de teste utilizada foi muito curta. Como sempre, este artigo tem finalidade exclusivamente de pesquisa. No próximo artigo, tentaremos analisar os três padrões de sinal que apresentaram dificuldades no teste forward e verificar se o uso de machine learning pode melhorar seus resultados.


ArquivoDescrição
WZ-73.mq5EA gerado pelo Assistente MQL5, cujo cabeçalho inclui os arquivos utilizados em sua construção.
SignalWZ_73.mqhArquivo da classe de sinal personalizado utilizada pelo Assistente MQL5.
Os arquivos anexados destinam-se à criação de um EA por meio do Assistente MQL5. Quem está começando pode encontrar mais informações aqui.

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

Arquivos anexados |
WZ-73.mq5 (8.26 KB)
SignalWZ_73.mqh (22.52 KB)
Últimos Comentários | Ir para discussão (2)
Israr Hussain Shah
Israr Hussain Shah | 4 jul. 2025 em 15:10
Conteúdo gerado por IA, não por humanos
Muhammad Syamil Bin Abdullah
Muhammad Syamil Bin Abdullah | 4 jul. 2025 em 16:38
Tente usar o filtro Ichimoku com o CCI
Conhecendo a linguagem MQL5 (Parte 18): Introdução ao padrão "Ondas de Wolfe" Conhecendo a linguagem MQL5 (Parte 18): Introdução ao padrão "Ondas de Wolfe"
Este artigo apresenta em detalhes o padrão de Ondas de Wolfe, tanto em sua versão de baixa quanto na de alta. Também analisa, passo a passo, a lógica utilizada para identificar setups válidos de compra e venda com base nesse padrão gráfico avançado.
Automatização de estratégias de negociação em MQL5 (Parte 22): Desenvolvimento de um sistema de recuperação por zonas para negociação a favor da tendência com o indicador Envelopes Automatização de estratégias de negociação em MQL5 (Parte 22): Desenvolvimento de um sistema de recuperação por zonas para negociação a favor da tendência com o indicador Envelopes
Desenvolveremos um sistema de recuperação por zonas (Zone Recovery System) integrado a uma estratégia de negociação a favor da tendência baseada no indicador Envelopes (Envelopes trend-trading strategy), utilizando MQL5. Também apresentaremos a arquitetura que combina os indicadores RSI e Envelopes para abrir operações e gerenciar a recuperação por zonas, com o objetivo de minimizar as perdas. Por meio da implementação prática e dos testes, demonstraremos como criar um sistema de negociação automatizada eficiente para mercados dinâmicos.
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.
Arbitragem estatística com ações cointegradas (Parte 1): testes de cointegração de Engle-Granger e Johansen Arbitragem estatística com ações cointegradas (Parte 1): testes de cointegração de Engle-Granger e Johansen
Este artigo apresenta uma introdução acessível aos testes de cointegração mais utilizados, voltada para traders, além de um guia prático para interpretar seus resultados. Os testes de Engle-Granger e Johansen permitem identificar pares ou grupos de ativos com relações estatisticamente significativas e uma dinâmica comum de longo prazo. O teste de Johansen é especialmente útil para carteiras com três ou mais ativos, pois avalia simultaneamente a força dos vetores de cointegração que relacionam todos os instrumentos.