English Русский 中文 Español Deutsch 日本語
preview
Desenvolvimento de ferramentas para análise de Price Action (Parte 24): Ferramenta de análise quantitativa de Price Action

Desenvolvimento de ferramentas para análise de Price Action (Parte 24): Ferramenta de análise quantitativa de Price Action

MetaTrader 5Sistemas de negociação |
27 0
Christian Benjamin
Christian Benjamin

Conteúdo



Introdução

A maioria dos traders que opera com Price Action se baseia em padrões de candles característicos, como pin bars, dojis, padrões de engolfo e candles Marubozu. Esses candles são usados para identificar mudanças no sentimento do mercado e localizar possíveis reversões ou movimentos de continuação da tendência. Procurar esses sinais manualmente em dezenas de gráficos consome muito tempo e faz com que alguns sinais passem despercebidos.

Para resolver esse problema, desenvolvemos o EA Price Action Quantification Analysis para MetaTrader 5. Esse EA:

  1. analisa automaticamente uma quantidade definida das barras mais recentes em busca de quatro padrões de Price Action amplamente reconhecidos;
  2. marca cada padrão detectado no gráfico com setas e rótulos, oferecendo referências visuais claras;
  3. emite um alerta e registra, em pontos, o movimento da barra seguinte, ajudando a avaliar a força do sinal;
  4. fornece estatísticas integradas de backtesting, tratando cada padrão como uma "operação" e calculando a taxa geral de acerto.

Nas seções seguintes, analisaremos a estrutura do EA, veremos seus parâmetros configuráveis e mostraremos como suas métricas de desempenho podem tornar sua abordagem de negociação baseada em Price Action mais precisa. Começaremos pelos padrões de candles específicos monitorados pelo EA, examinando a estrutura de cada candle e os cálculos usados para identificá-los.

Padrões de candles

  • Pin bars

Um pin bar é um único candle com corpo pequeno e uma cauda longa, ou seja, uma sombra longa. Quando esse tipo de candle aparece, significa que o preço tentou avançar bastante em uma direção, mas acabou sendo fortemente rejeitado e retornou.

Em um pin bar de baixa, a longa sombra superior mostra que os compradores não conseguiram sustentar o preço nos níveis mais altos e os vendedores assumiram o controle.

Figura 1. Pin bar de baixa

Um pin bar de alta apresenta uma longa sombra inferior, indicando a entrada dos compradores e a retomada da iniciativa a favor da alta.

Figura 2. Pin bar de alta

A cor do candle também pode reforçar o sinal. Em um pin bar de baixa, um corpo vermelho (ou preto) torna o sinal mais convincente, pois o candle fecha abaixo do preço de abertura, indicando predominância dos vendedores. Em um pin bar de alta, um corpo verde (ou branco) reforça o sinal, já que o candle fecha acima do preço de abertura, refletindo pressão compradora. No entanto, o formato do pin bar e o comprimento de sua cauda são mais importantes do que a cor isoladamente. Para considerar esse sinal confiável, procure uma cauda com pelo menos duas a três vezes o tamanho do corpo, observe possíveis picos de volume no momento da forte rejeição do preço e verifique se o pin bar se formou próximo a níveis conhecidos de suporte ou resistência. Essas verificações adicionais ajudam a diferenciar reversões efetivas de simples sombras dos candles.

Lógica de identificação

  • Calcule candleBody, topShadow e bottomShadow.
  • Deve valer candleBody > minBodyPoints * _Point.

Pin bar de baixa:

topShadow >= wickToBodyRatio * candleBody

bottomShadow < smallWickCap * candleBody

Pin bar de alta:

bottomShadow >= wickToBodyRatio * candleBody

topShadow < smallWickCap * candleBody

// 1. Calculate parts
double candleBody   = MathAbs(closePrice - openPrice);
double topShadow    = highPrice - MathMax(openPrice, closePrice);
double bottomShadow = MathMin(openPrice, closePrice) - lowPrice;

// 2. Minimum body check
if(candleBody > minBodyPoints * _Point)
{
   // Bearish pin bar
   if(topShadow >= wickToBodyRatio * candleBody
      && bottomShadow < smallWickCap * candleBody)
      Print("Bearish Pin Bar detected");

   // Bullish pin bar
   else if(bottomShadow >= wickToBodyRatio * candleBody
           && topShadow < smallWickCap * candleBody)
      Print("Bullish Pin Bar detected");
}

  • Doji

Um doji se forma quando os preços de abertura e fechamento do candle são praticamente iguais. Esse padrão indica indecisão no mercado, e sua interpretação direcional depende da tendência anterior. As diferenças no comprimento das sombras superior e inferior dão origem a formatos que lembram um sinal de mais, uma cruz ou uma cruz invertida.

Figura 3. Doji

Lógica de identificação

  1. Calcule candleBody, fullRange, topShadow e bottomShadow.
  2. A condição candleBody ≤ maxDojiRatio * fullRange deve ser satisfeita.
  3. Também devem valer topShadow > candleBody e bottomShadow > candleBody.
// 1. Calculate body and range
double candleBody   = MathAbs(closePrice - openPrice);
double fullRange    = highPrice - lowPrice;
double topShadow    = highPrice - MathMax(openPrice, closePrice);
double bottomShadow = MathMin(openPrice, closePrice) - lowPrice;

// 2. Tiny body test
if(candleBody <= fullRange * maxDojiRatio)
{
   // 3. Both shadows must extend beyond the body
   if(topShadow > candleBody && bottomShadow > candleBody)
      Print("Doji detected");
}
  • Padrões de engolfo

Existem dois tipos de padrão de engolfo: engolfo de alta e engolfo de baixa.

Engolfo de alta

Esse padrão de reversão formado por dois candles aparece quando uma tendência de baixa ou um período de consolidação se aproxima do fim. Logo após um pequeno candle de baixa, forma-se um candle de alta maior, cujo corpo engloba completamente o corpo do candle anterior. O tamanho do segundo candle mostra que os compradores tomaram completamente a iniciativa dos vendedores e, muitas vezes, marca o início de um forte movimento de alta.

Figura 4. Engolfo de alta

Engolfo de baixa

Esse é o padrão oposto. Um pequeno candle de alta é seguido por um candle de baixa maior, que engloba completamente o corpo do candle anterior. Esse padrão indica que os vendedores assumiram o controle e pode sinalizar o início de um forte movimento de baixa.

Bearish Engulfing

Figura 5. Engolfo de baixa

Lógica de identificação

Вычислите prevBody = |prevClose - prevOpen|, currBody = |close - open|.

A condição currBody > prevBody deve ser satisfeita.

Engolfo de alta:

  • prevClose < prevOpen
  • openPriceprevClose
  • closePriceprevOpen

Engolfo de baixa:

  • prevClose > prevOpen
  • openPrice ≥ prevClose
  • closePrice ≤ prevOpen
// 1. Compute body sizes
double prevBody = MathAbs(prevClose - prevOpen);
double currBody = MathAbs(closePrice - openPrice);

// 2. Must be larger than previous
if(currBody > prevBody)
{
   // Bullish engulfing
   if(prevClose < prevOpen
      && openPrice <= prevClose
      && closePrice >= prevOpen)
      Print("Bullish Engulfing detected");

   // Bearish engulfing
   else if(prevClose > prevOpen
           && openPrice >= prevClose
           && closePrice <= prevOpen)
      Print("Bearish Engulfing detected");
}

  • Candle Marubozu


Figura 6. Marubozu

O candle Marubozu se destaca por apresentar um corpo longo e praticamente nenhuma sombra. Os preços de abertura e fechamento abrangem quase toda a faixa do candle, indicando uma atuação decisiva dos participantes do mercado. Existem três variações de Marubozu, cada uma com uma versão de alta e outra de baixa:

Marubozu completa

De alta: abertura na mínima e fechamento na máxima. Os compradores conduzem o preço do início ao fim.

De baixa: abertura na máxima e fechamento na mínima. Os vendedores dominam durante toda a sessão.

Marubozu de abertura

De alta: abertura na mínima e fechamento pouco abaixo da máxima, com uma pequena sombra superior. Os compradores assumem o controle desde o início.

De baixa: abertura na máxima e fechamento pouco acima da mínima, com uma pequena sombra inferior. Os vendedores assumem o controle desde o início da sessão.

Marubozu de fechamento

De alta: fechamento na máxima e abertura pouco acima da mínima, com uma pequena sombra inferior. A pressão compradora aumenta à medida que o candle se aproxima do fechamento.

De baixa: fechamento na mínima e abertura pouco abaixo da máxima, com uma pequena sombra superior. A pressão vendedora se intensifica à medida que o candle se aproxima do fechamento.

Lógica de identificação

  • Calcule candleBody, fullRange, topShadow e bottomShadow.
  • Deve valer candleBody ≥ marubozuRatio * fullRange.
  • Também devem valer topShadow ≤ (1 - marubozuRatio) * fullRange e bottomShadow ≤ (1 - marubozuRatio) * fullRange.
  • Se closePrice > openPrice, o candle é considerado de alta; caso contrário, é considerado de baixa.

// 1. Calculate parts
double candleBody   = MathAbs(closePrice - openPrice);
double fullRange    = highPrice - lowPrice;
double topShadow    = highPrice - MathMax(openPrice, closePrice);
double bottomShadow = MathMin(openPrice, closePrice) - lowPrice;

// 2. Body covers most of the range
if(candleBody >= marubozuRatio * fullRange)
{
   // 3. Shadows must be small
   double maxWick = (1 - marubozuRatio) * fullRange;
   if(topShadow <= maxWick && bottomShadow <= maxWick)
   {
      // 4. Bullish or bearish
      if(closePrice > openPrice)
         Print("Bullish Marubozu detected");
      else
         Print("Bearish Marubozu detected");
   }
}



Análise do EA em MQL5

O esquema acima ilustra o funcionamento do EA no gráfico do MetaTrader 5. A tabela abaixo reúne os resultados, e cada valor representa uma variação percentual. Quando começamos a desenvolver este EA, nosso principal objetivo era automatizar a identificação dos principais padrões de candles usados com frequência pelos traders na tomada de decisões, como pin bars, dojis, padrões de engolfo e Marubozu. Queríamos que o EA analisasse objetivamente a dinâmica recente do preço, identificasse esses padrões com precisão e fornecesse sinais visuais claros no gráfico, além de informações estatísticas sobre o desempenho de cada padrão.

Para isso, começamos definindo parâmetros de entrada que tornam a análise mais flexível. Entre eles estão o número de barras analisadas (InpLookbackBars), o tamanho mínimo do corpo em pontos (InpMinBodySizePts), usado para filtrar candles pouco significativos, e a relação entre sombra e corpo (InpWickBodyRatio), usada na identificação de pin bars. Também adicionamos um parâmetro para o período do ATR, que permite avaliar a volatilidade do mercado, fator que pode influenciar as regras de identificação dos padrões.

// Input parameters for customization
input int    InpLookbackBars   = 200;   // Bars to scan
input int    InpMinBodySizePts = 10;    // Min body size (points)
input double InpWickBodyRatio  = 2.0;   // Min wick-to-body ratio
input int    InpATRPeriod      = 14;    // ATR period

Na etapa de inicialização (OnInit), configuramos arrays para armazenar os dados calculados de cada barra, como o tamanho do corpo, as sombras superior e inferior, a faixa total e os valores do ATR. Também configuramos esses arrays com indexação de série temporal para processar com eficiência as barras mais recentes. Além disso, preparamos um pequeno buffer para acompanhar os sinais recentes, que posteriormente é usado na análise da taxa de acerto dos padrões.

int OnInit()
  {
   ArraySetAsSeries(Body,true);
   ArraySetAsSeries(UpperWick,true);
   ArraySetAsSeries(LowerWick,true);
   ArraySetAsSeries(TotalRange,true);
   ArraySetAsSeries(ATR,true);
   ArrayResize(Body, InpLookbackBars+2);
   ArrayResize(UpperWick, InpLookbackBars+2);
   ArrayResize(LowerWick, InpLookbackBars+2);
   ArrayResize(TotalRange, InpLookbackBars+2);
   ArrayResize(ATR, InpLookbackBars+2);

   for(int i=0;i<5;i++)
      g_history[i]="";

   return(INIT_SUCCEEDED);
  }
A lógica principal está concentrada na função OnTick, executada a cada novo tick do mercado. Para evitar cálculos desnecessários, adicionamos uma verificação das marcas de tempo para processar cada nova barra apenas uma vez. Quando uma nova barra é detectada, chamamos a função AnalyzeAndDraw, responsável pela análise principal.
void OnTick()
  {
   static datetime lastTime=0;
   datetime current = iTime(_Symbol, _Period, 0);
   if(current == lastTime)
      return; // Only process once per new bar
   lastTime = current;
   AnalyzeAndDraw();
  }

Dentro de AnalyzeAndDraw, primeiro removemos todos os objetos gráficos anteriores para evitar o excesso de elementos no gráfico. Em seguida, percorremos as barras mais recentes para calcular os principais parâmetros de cada candle: o tamanho do corpo, definido como a diferença absoluta entre os preços de abertura e fechamento; a sombra superior, calculada como a máxima menos o maior valor entre os preços de abertura e fechamento; a sombra inferior, calculada como o menor valor entre os preços de abertura e fechamento menos a mínima; e a faixa total, definida como a máxima menos a mínima. Também copiamos os valores do ATR para levar a volatilidade em consideração na identificação dos padrões.

void AnalyzeAndDraw()
  {
   int bars = MathMin(InpLookbackBars, (int)SeriesInfoInteger(_Symbol,_Period,SERIES_BARS_COUNT));

   ObjectsDeleteAll(0,0,OBJ_ARROW);
   ObjectsDeleteAll(0,0,OBJ_LABEL);

   for(int i=0; i<bars; i++)
     {
      double op = iOpen(_Symbol,_Period,i);
      double cl = iClose(_Symbol,_Period,i);
      double hi = iHigh(_Symbol,_Period,i);
      double lo = iLow(_Symbol,_Period,i);

      // Calculate candlestick components
      Body[i]       = MathAbs(cl-op);
      UpperWick[i]  = hi - MathMax(op,cl);
      LowerWick[i]  = MathMin(op,cl) - lo;
      TotalRange[i] = hi - lo;
     }

   // Copy ATR buffer
   if(CopyBuffer(iATR(_Symbol,_Period,InpATRPeriod),0,0,bars,ATR)<=0)
      return; // Exit if ATR data not available

Em seguida, aplicamos as regras de identificação dos padrões. Por exemplo, para identificar um pin bar, verificamos se o candle apresenta um corpo pequeno e uma sombra longa e se a relação entre a sombra e o corpo ultrapassa o limite definido.

  • pin bar de baixa: sombra superior longa >= relação × corpo, sombra inferior curta;
  • pin bar de alta: sombra inferior longa >= relação × corpo, sombra superior curta.

Primeiro, descartamos candles com corpos excessivamente pequenos, exigindo que Body > minPts. Em seguida, exigimos que uma das sombras tenha pelo menos InpWickBodyRatio vezes o tamanho do corpo, enquanto a sombra oposta deve permanecer abaixo de 50% do tamanho do corpo.

// assume Body[i], UpperWick[i], LowerWick[i] already computed
if(InpShowPinBar && Body[i] > InpMinBodySizePts*_Point)
{
   // Bearish: towering upper wick, stubby lower wick
   if( UpperWick[i] > Body[i]*InpWickBodyRatio
       && LowerWick[i] < Body[i]*0.5 )
      type = "Bearish Pin Bar";

   // Bullish: towering lower wick, stubby upper wick
   else if( LowerWick[i] > Body[i]*InpWickBodyRatio
            && UpperWick[i] < Body[i]*0.5 )
      type = "Bullish Pin Bar";
}

Para identificar dojis, procuramos candles com corpo pequeno em relação ao limite definido em pontos e cujas sombras indiquem uma possível indecisão do mercado.

  • Body <= DojiBodyRatio × totalRange;
  • ambas as sombras devem ser maiores que o corpo, confirmando a presença efetiva de sombras.

Limitamos o tamanho do corpo, por exemplo, a 10% da faixa total (InpDojiBodyRatio). A exigência de que cada sombra seja maior que o corpo elimina candles do tipo "pião" com sombras praticamente inexistentes.

// TotalRange[i] = high – low
if(InpShowDoji
   && Body[i] <= TotalRange[i] * InpDojiBodyRatio    // body tiny vs full range
   && UpperWick[i] > Body[i]                         // upper shadow present
   && LowerWick[i] > Body[i])                        // lower shadow present
   type = "Doji";

A identificação dos padrões de engolfo exige comparar o candle atual com o anterior. Verificamos se os preços de abertura e fechamento do candle anterior ficam em lados opostos do corpo do candle atual e se o candle atual engloba completamente o anterior.

  • Engolfo de alta: a barra anterior era de baixa, o preço de abertura da barra atual ≤ preço de fechamento da barra anterior, o preço de fechamento da barra atual ≥ preço de abertura da barra anterior e currBody > prevBody
  • Engolfo de baixa: a barra anterior era de alta, o preço de abertura da barra atual ≥ preço de fechamento da barra anterior, o preço de fechamento da barra atual ≤ preço de abertura da barra anterior e currBody > prevBody

double po = iOpen(_Symbol,_Period,i+1),
       pc = iClose(_Symbol,_Period,i+1);
double prevBody = MathAbs(pc - po),
       currBody = Body[i];

if(InpShowEngulfing && currBody > prevBody)
{
   // Bullish: current body engulfs prior’s
   if(pc < po && op <= pc && cl >= po)
      type = "Bullish Engulfing";
   // Bearish: current body engulfs prior’s
   else if(pc > po && op >= pc && cl <= po)
      type = "Bearish Engulfing";
}

Para os candles Marubozu, verificamos se o corpo ocupa a maior parte da faixa total, o que indica forte momentum.

  • Body >= MarubozuBodyRatio × totalRange, por exemplo, >= 90%;
  • ambas as sombras <= (1 - MarubozuBodyRatio) × totalRange.

if(InpShowMarubozu
   && Body[i] >= TotalRange[i] * InpMarubozuBodyRatio
   && UpperWick[i] <= TotalRange[i] * (1 - InpMarubozuBodyRatio)
   && LowerWick[i] <= TotalRange[i] * (1 - InpMarubozuBodyRatio))
{
   type = (cl > op) ? "Bullish Marubozu" : "Bearish Marubozu";
}

Sempre que um padrão é detectado, incrementamos os contadores de sinais totais e de acertos. Consideramos um "acerto" quando o candle seguinte se move na direção esperada, o que fornece ao menos uma estimativa básica da confiabilidade do padrão.

if(type!="")
{
    lastIdx = i;
    lastCl = cl;
    lastIsBuy = (StringFind(type,"Bullish")>=0);
    latestSignal = type;

    g_totalSignals++;
    double nextC = iClose(_Symbol,_Period,i-1);
    if(lastIsBuy && nextC>cl)
        g_totalWins++;
    if(!lastIsBuy && nextC<cl)
        g_totalWins++;

    DrawPattern(i, type, lastIsBuy);
    break;
}

Para tornar esses sinais mais fáceis de visualizar, usamos a função DrawPattern para desenhar setas para cima ou para baixo no gráfico e adicionar rótulos com o tipo de padrão. Também geramos alertas para receber notificações imediatamente quando um padrão é detectado.

void DrawPattern(int idx, const string type, bool isBuy)
  {
   datetime t = iTime(_Symbol,_Period,idx);
   double y = iHigh(_Symbol,_Period,idx) + 15*_Point;
   string an = StringFormat("PAQ_%s_%d",type,idx);
   ObjectCreate(0,an,OBJ_ARROW,0,t,y);
   ObjectSetInteger(0,an,OBJPROP_ARROWCODE,isBuy?233:234);
   ObjectSetInteger(0,an,OBJPROP_COLOR,isBuy?clrLime:clrRed);
   string lbl = an+"_lbl";
   ObjectCreate(0,lbl,OBJ_LABEL,0,t,y-25*_Point);
   ObjectSetString(0,lbl,OBJPROP_TEXT,type);
   ObjectSetInteger(0,lbl,OBJPROP_COLOR,isBuy?clrLime:clrRed);
  }
Ao longo de todo o desenvolvimento, buscamos tornar o EA flexível e informativo. Por isso, adicionamos um buffer com o histórico dos padrões para armazenar os sinais mais recentes e, ao final do backtesting ou quando o EA é removido, exibimos estatísticas de desempenho: número total de sinais, número de acertos e respectiva taxa de acerto. Isso nos ajuda a avaliar a eficácia da nossa lógica de identificação de padrões no longo prazo.
void OnDeinit(const int reason)
  {
   double rate = g_totalSignals>0 ? 100.0*g_totalWins/g_totalSignals : 0.0;
   PrintFormat("[PAQ] Backtest completed: Signals=%I64d Wins=%I64d WinRate=%.1f%%",
               g_totalSignals, g_totalWins, rate);
  }

No fim, este EA foi desenvolvido combinando a lógica de identificação de padrões de candles, recursos visuais e mecanismos de acompanhamento de desempenho. Nosso objetivo foi criar um sistema automatizado que simplificasse a busca por padrões, muitas vezes trabalhosa e, ao mesmo tempo, fornecesse sinais visuais claros e estatísticas de desempenho, contribuindo para decisões de negociação mais fundamentadas.


Resultado

Vamos ver como nosso EA se comportou tanto em tempo real quanto no backtesting. Primeiro, o gráfico abaixo mostra um padrão de engolfo de baixa detectado pelo EA em condições reais de mercado. É possível ver claramente que o sinal foi identificado corretamente: o candle de baixa engloba completamente o candle de alta anterior.

Figura 7. Engolfo de baixa

Em seguida, temos um pin bar de baixa, também detectado com sucesso pelo EA. Trata-se de um pin bar identificado corretamente, o que demonstra a precisão da ferramenta na identificação de padrões de candles.

Figura 8. Pin bar de baixa

Por fim, vejamos os resultados do backtesting. O EA identifica corretamente os padrões e registra no log o nome de cada padrão detectado.

Figura 9 Backtesting


Conclusão

Os resultados da seção anterior mostram que nosso EA identifica de forma confiável os quatro principais padrões de candles. Isso pode ajudar tanto traders iniciantes quanto experientes a detectar formações que nem sempre são fáceis de reconhecer visualmente. Nos meus testes com dados históricos e em condições reais de mercado, o EA marcou corretamente cada padrão. Embora nenhum sistema seja perfeito e alguns sinais possam falhar, este EA não foi desenvolvido para filtrar todos os sinais falsos. Seu objetivo é oferecer aos traders mais uma ferramenta precisa para a análise de Price Action. Após conferir esses sinais, os traders também podem aplicar seus próprios métodos de confirmação antes de abrir uma posição comprada ou vendida.

De modo geral, o EA cumpre muito bem sua principal função: identificar padrões. Recomendo-o com confiança como uma ferramenta capaz de reconhecer com precisão as quatro formações-alvo. Você pode ajustar os parâmetros de entrada de acordo com sua estratégia. Ficarei contente em receber seus comentários sobre outros aspectos que, na sua opinião, ainda podem ser aprimorados.

Data Nome da ferramenta Descrição Versão Atualizações Observações
01/10/24 Chart Projector Script para aplicar um efeito fantasma ao movimento do preço do dia anterior 1.0 Versão inicial Ferramenta número 1
18/11/24 Analytical Comment Fornece informações do dia anterior em formato de tabela e também prevê a direção futura do mercado 1.0 Versão inicial Ferramenta número 2
27/11/24 Analytics Master Atualiza os indicadores de mercado a cada duas horas 1.01 Segunda versão Ferramenta número 3
02/12/24 Analytics Forecaster Atualiza os indicadores de mercado a cada duas horas, com integração ao Telegram 1.1 Terceira versão Ferramenta número 4
09/12/24 Volatility Navigator O EA analisa as condições do mercado usando Bandas de Bollinger, RSI e ATR 1.0 Versão inicial Ferramenta número 5
19/12/24 Mean Reversion Signal Reaper Analisa o mercado e gera sinais usando uma estratégia de reversão à média 1.0 Versão inicial Ferramenta número 6
9/01/25 Signal Pulse Analisa vários timeframes 1.0 Versão inicial Ferramenta número 7
17/01/25 Metrics Board Painel com botões para análise 1.0 Versão inicial Ferramenta número 8
21/01/25 External Flow Análise usando bibliotecas externas 1.0 Versão inicial Ferramenta número 9
27/01/25 VWAP Preço médio ponderado por volume 1.3 Versão inicial Ferramenta número 10
02/02/25 Heikin Ashi Suavização da tendência e identificação de sinais de reversão 1.0 Versão inicial Ferramenta número 11
04/02/25 FibVWAP Geração de sinais por meio de análise em Python 1.0 Versão inicial Ferramenta número 12
14/02/25 RSI DIVERGENCE Divergência entre preço e RSI 1.0 Versão inicial Ferramenta número 13
17/02/25 Parabolic Stop and Reverse (PSAR) Automatização da estratégia PSAR 1.0 Versão inicial Ferramenta número 14
20/02/25 Script Quarters Drawer Marcação dos níveis de quartos no gráfico 1.0 Versão inicial Ferramenta número 15
27/02/25 Intrusion Detector Detecta e emite alertas quando o preço atinge os níveis de quartos 1.0 Versão inicial Ferramenta número 16
27/02/25 TrendLoom Tool Painel de análise em múltiplos timeframes 1.0 Versão inicial Ferramenta número 17
11/03/25 Quarters Board Painel com botões para ativar ou desativar os níveis de quartos 1.0 Versão inicial Ferramenta número 18
26/03/25 ZigZag Analyzer Traçado de linhas de tendência com o indicador ZigZag 1.0 Versão inicial Ferramenta número 19
10/04/25 Correlation Pathfinder Construção de gráficos de correlação entre taxas de câmbio usando bibliotecas Python. 1.0 Versão inicial Ferramenta número 20
23/04/25 Market Structure Flip Detector Tool Identificação de reversões na estrutura do mercado 1.0 Versão inicial Ferramenta número 21
08/05/25 Correlation Dashboard Correlação entre diferentes pares 1.0 Versão inicial Ferramenta número 22
13/05/25 Currency Strength Meter Mede a força de uma moeda com base em vários pares de moedas que a incluem 1.0 Versão inicial Ferramenta número 23
21/05/25 PAQ Analysis Tool Identifica padrões de candles 1.0 Versão inicial Ferramenta número 24

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

Introdução à linguagem MQL5 (Parte 16): Criação de EAs com padrões de análise técnica Introdução à linguagem MQL5 (Parte 16): Criação de EAs com padrões de análise técnica
Este artigo mostra aos iniciantes como criar um EA em MQL5 capaz de identificar o clássico padrão de análise técnica "Cabeça e Ombros" e operar com base nele. Veremos como detectar esse padrão por meio da ação do preço, desenhá-lo no gráfico, definir os níveis de entrada, Stop Loss e Take Profit e automatizar a execução das operações com base no padrão.
Recursos do Assistente MQL5 que você precisa conhecer (Parte 66): Uso de padrões FrAMA e Force Index com kernel de produto escalar Recursos do Assistente MQL5 que você precisa conhecer (Parte 66): Uso de padrões FrAMA e Force Index com kernel de produto escalar
O indicador FrAMA e o oscilador Force Index são ferramentas de análise de tendência e volume que podem ser usadas em conjunto no desenvolvimento de um EA. Dando continuidade ao artigo anterior, no qual apresentamos essa combinação, vamos analisar como o aprendizado de máquina pode ser aplicado a ela. Usaremos uma rede neural convolucional (convolutional neural network) que emprega um kernel de produto escalar (dot-product kernel) para gerar previsões com base nos dados de entrada desses indicadores. Essa lógica é implementada em um arquivo personalizado da classe de sinais (signal class), que interage com o Assistente MQL5 para criar o EA.
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.
Machine Learning e Data Science (Parte 41): YOLOv8v para detectar padrões nos mercados Forex e de ações Machine Learning e Data Science (Parte 41): YOLOv8v para detectar padrões nos mercados Forex e de ações
A identificação de padrões gráficos nos mercados financeiros é uma tarefa complexa, pois exige a análise dos dados exibidos no gráfico, algo difícil de realizar em MQL5 devido às limitações relacionadas ao processamento de imagens. Neste artigo, veremos um modelo bastante interessante em Python que permite detectar padrões no gráfico com o mínimo de esforço.