Na prática, quem programa indicadores no MetaTrader 5 acaba batendo na parede ao tentar medir a força de um relacionamento entre dois ativos. O código parece simples, mas a falta de exemplos reais, a escolha errada de períodos e a confusão entre correlação de Pearson e covariância costumam gerar sinais falsos e perdas evitáveis.
Quando a correlação de Pearson realmente ajuda
Imagine um trader que combina EUR/USD e GBP/USD numa estratégia de hedge. Ele quer saber se, nos últimos 100 candles, os pares se moveram juntos ou se um está “descolando”. A correlação de Pearson (r) entrega um número entre –1 e 1, indicando direção e intensidade. Se r≈0,5, há uma relação moderada; se r≈0,9, a co‑movimentação é quase perfeita.
Passo a passo no MQL5
- 1. Coleta dos dados: use
CopyClosepara puxar os preços de fechamento de ambos os símbolos no mesmo timeframe. - 2. Alinhamento temporal: garanta que o vetor de preços tenha o mesmo tamanho; caso contrário, descarte os candles excedentes.
- 3. Cálculo das médias:
double meanA = ArrayAverage(arrA); double meanB = ArrayAverage(arrB); - 4. Numerador:
double num = 0; for(int i=0;i - 5. Denominador:
double den = MathSqrt(ArrayVariance(arrA))*MathSqrt(ArrayVariance(arrB)); - 6. Resultado:
double r = num/den;
Limitações que poucos apontam
A correlação de Pearson assume linearidade e sensibilidade a outliers. Um único candle de volatilidade extrema pode inflar r e mascarar a tendência real. Além disso, o cálculo em janelas deslizantes pode gerar “efeito lag”: o indicador só reflete o que já aconteceu, não o que está por vir.
Exemplo prático de falha
Um trader usa 20‑periods para EUR/USD × USD/JPY e obtém r=0,85, acreditando em forte correlação. No entanto, durante um anúncio de taxa, o USD/JPY dispara, criando um outlier que eleva artificialmente o valor. Se ele recalcular com 50 períodos ou aplicar um filtro de mediana, r cai para 0,42, revelando que a relação não era tão robusta.
FAQ rápido
- Posso usar preços de abertura? Sim, mas a escolha deve ser consistente; misturar aberturas e fechamentos gera ruído.
- Qual a janela ideal? Não existe “tamanho único”. Teste múltiplas janelas (10, 30, 100) e observe a estabilidade de r.
- Como lidar com outliers? Aplicar um trimmed mean ou excluir os 5 % mais extremos antes do cálculo.
Se quiser acelerar a implementação, o repositório oficial da MQL5 já oferece um snippet pronto – basta adaptar ao seu símbolo. Acesse o exemplo completo aqui e ajuste a janela conforme o seu perfil de risco.
Primeiros passos após instalar o MetaEditor
Abra o MetaEditor e crie um novo script chamado PearsonCorrelation.mq5. Salve na pasta Scripts para que o terminal o reconheça imediatamente. Não esqueça de compilar (F7) antes de executar.
- Verifique a versão: MQL5 ≥ 600 garante suporte total ao tipo
doublecom precisão de 15 casas decimais. - Inclua a biblioteca padrão:
#includetraz funções auxiliares, porém a correlação será codificada manualmente para controle total.
Estrutura mínima do algoritmo
O cálculo de Pearson requer duas séries temporais alinhadas (por exemplo, preços de fechamento de dois ativos). O fluxo básico:
1. Carregar dados históricos →CopyClose. 2. Garantir mesmo número de barras → truncar a série maior. 3. Calcular médias →ArrayAverage. 4. Aplicar a fórmula: r = Σ[(x‑i‑μx)*(y‑i‑μy)] / sqrt( Σ(x‑i‑μx)² * Σ(y‑i‑μy)² ) 5. Exibir resultado no log ou como objeto gráfico.
Checklist operacional para a rotina diária
| Etapa | Ação | Tempo estimado |
|---|---|---|
| 1 | Atualizar séries com CopyClose (últimos 250 candles) | 5 min |
| 2 | Validar integridade (sem gaps) | 2 min |
| 3 | Executar cálculo | 1 min |
| 4 | Registrar r no Journal e disparar alerta se |r| > 0,7 | 1 min |
Erros comuns e como evitá‑los
- Desalinhamento de períodos: se um ativo tem horário de negociação diferente, use
TimeCurrent()como referência e ajuste comShift. - Divisão por zero: a soma dos quadrados pode ser nula quando a série é constante. Inclua verificação:
if(denominator==0) return 0;. - Precisão numérica: ao trabalhar com micro‑pips, multiplique temporariamente por 10⁵ para evitar perdas de casas decimais, depois reconverta.
Workflow recomendado para iniciantes
Transforme o script em um expert advisor simples que rode no evento OnTimer() a cada 60 min. Assim, a correlação será atualizada automaticamente, sem necessidade de intervenção manual.
⚡ Dica: use
EventSetTimer(60*60)e, dentro deOnTimer(), chame a funçãoCalcPearson(). Isso cria um mini‑dashboard noExpertslog.
Mini‑dashboard textual
Inclua no final do script a rotina abaixo para imprimir um resumo visual:
PrintFormat("Pearson %s‑%s : % .4f", Symbol1, Symbol2, r); Quando o valor ultrapassar o limiar definido, o link de afiliado pode direcionar para um serviço de sinais que já incorpora essa métrica.
Timeline evolutiva (primeiro mês)
- Semana 1: implementar o cálculo bruto e validar com dados históricos conhecidos.
- Semana 2: automatizar a coleta de séries e criar alertas de alta correlação.
- Semana 3: integrar ao painel de controle (ChartObjects) para visualização direta no gráfico.
- Semana 4: otimizar desempenho (reduzir chamadas de
CopyCloseusando buffers).
Seguindo esse roteiro, a correlação de Pearson deixa de ser um conceito teórico e passa a ser uma ferramenta prática de decisão, pronta para ser combinada com estratégias de pares‑trading ou hedge.
Perfil ideal e limites do “Como calcular correlação de Pearson em MQL5”
Se você é trader que já mexe com indicadores customizados e quer cruzar séries temporais diretamente no MetaEditor, este recurso pode ser um trunfo. Se, ao contrário, sua rotina se resume a comprar sinais prontos ou usar plataformas “plug‑and‑play”, a curva de aprendizado será mais um peso do que uma ajuda.
Quem deve considerar o pacote
- Programadores intermediários de MQL5: conhece a estrutura de scripts, consegue compilar e debugar, mas ainda busca funções prontas para evitar cálculo manual.
- Analistas quantitativos que precisam validar pares de ativos antes de montar estratégias de arbitragem.
- Educadores e mentores que desejam demonstrar ao vivo a relação estatística entre variáveis de preço.
Quem provavelmente não terá bom aproveitamento
- Iniciantes absolutos em programação – a sintaxe MQL5 já exige um passo de adaptação antes de tocar no cálculo.
- Traders que operam apenas em timeframe diário e confiam exclusivamente em indicadores de momentum; a correlação de Pearson perde relevância nessas análises.
- Profissionais que exigem métricas avançadas como correlação parcial ou rolling‑window otimizada; o módulo oferece só o básico.
Limitações práticas
O algoritmo calcula correlação linear em amostras estáticas. Não há suporte a janelas deslizantes, normalização de outliers ou tratamento robusto de séries não‑estacionárias. Em mercados voláteis, a medida pode inflar valores e gerar sinais enganosos.
Além disso, o script depende exclusivamente da biblioteca Math do MQL5; quem usa broker que restringe acesso a funções matemáticas avançadas verá falhas na compilação.
FAQ contextual
| Pergunta | Resposta |
|---|---|
| Posso usar em ativos com diferentes períodos? | Sim, mas é preciso alinhar as séries manualmente; o módulo não sincroniza timeframes. |
| O cálculo aceita valores ausentes (NaN)? | Não. Qualquer registro faltante aborta a execução, exigindo pré‑processamento. |
| É possível exportar o coeficiente para CSV? | Não há funcionalidade nativa, mas basta adicionar FileWrite ao script. |
| Funciona em MetaTrader 4? | Não. A API MathCorrelation só existe em MQL5. |
Checklist rápido antes de decidir
- Domínio básico de loops e arrays em MQL5.
- Necessidade de validar relações lineares entre duas séries simultâneas.
- Disponibilidade de tempo para adaptar o código à sua estratégia.
- Aceitação de que o output será um número entre ‑1 e 1, sem interpretação automática.
Parecer editorial equilibrado
O pacote entrega exatamente o que promete: um cálculo de Pearson pronto para ser inserido em estratégias automatizadas. Não oferece glamour, nem “inteligência artificial” de fundo, mas cumpre o papel com precisão matemática e baixo consumo de CPU.
Para quem tem a disciplina de validar hipóteses estatísticas antes de operar, ele representa um ganho de produtividade mensurável. Para quem busca “sinais mágicos”, a ferramenta se reduz a mais um número que acaba acumulando poeira no código.
Mini cenários reais
Cenário A: um trader de FX usa o módulo para comparar EUR/USD e GBP/USD em 15 min. O coeficiente de 0,84 revela forte co‑movimento; ele introduz um filtro de correlação <90 % nas entradas. Resultado: redução de 12 % nas perdas de “whipsaw”.
Cenário B: um analista de ações tenta correlacionar preço e volume de PETR4 no dia. O cálculo retorna 0,12, indicando quase nenhuma relação linear – ele decide abandonar a ideia e volta ao estudo de indicadores de volatilidade.
Próximos passos recomendados
Baixe o script aqui e teste em um demo com pares de sua escolha. Ajuste a janela de amostragem para 250 candles e observe a variação do coeficiente ao longo do tempo. Se a oscilação for alta, considere complementar a análise com correlação de Kendall ou Spearman.
Em resumo, a ferramenta é útil, porém circunscrita. Seu valor depende da maturidade do usuário em filtrar ruído estatístico e integrar o número ao gerenciamento de risco.

