Desenvolvimento de ferramentas para análise de Price Action (Parte 24): Ferramenta de análise quantitativa de Price Action
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:
- analisa automaticamente uma quantidade definida das barras mais recentes em busca de quatro padrões de Price Action amplamente reconhecidos;
- marca cada padrão detectado no gráfico com setas e rótulos, oferecendo referências visuais claras;
- emite um alerta e registra, em pontos, o movimento da barra seguinte, ajudando a avaliar a força do sinal;
- 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
- Calcule candleBody, fullRange, topShadow e bottomShadow.
- A condição candleBody ≤ maxDojiRatio * fullRange deve ser satisfeita.
- 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.

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
- openPrice ≤ prevClose
- closePrice ≥ prevOpen
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
Aviso: Todos os direitos sobre esses materiais pertencem à MetaQuotes Ltd. É proibida a reimpressão total ou parcial.
Esse artigo foi escrito por um usuário do site e reflete seu ponto de vista pessoal. A MetaQuotes Ltd. não se responsabiliza pela precisão das informações apresentadas nem pelas possíveis consequências decorrentes do uso das soluções, estratégias ou recomendações descritas.
Introdução à linguagem MQL5 (Parte 16): Criação de EAs com padrões de análise técnica
Recursos do Assistente MQL5 que você precisa conhecer (Parte 66): Uso de padrões FrAMA e Force Index com kernel de produto escalar
Está chegando o novo MetaTrader 5 e MQL5
Machine Learning e Data Science (Parte 41): YOLOv8v para detectar padrões nos mercados Forex e de ações
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso