Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 28
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Visão geral
Quase todas as ferramentas que criamos para analisar um gráfico permanecem no mundo dos números. Esta, porém, vai além. A Aproximação Agregada Simbólica (SAX), introduzida por Jessica Lin, Eamonn Keogh e colegas em 2003, pega um intervalo de preços e o transforma em uma sequência curta de letras, algo como bddcbbba. Uma vez que um trecho do mercado se torna uma palavra, é possível fazer com ela tudo o que a ciência da computação já sabe fazer com texto: comparar, contar, gerar hash, pesquisar.
Esta publicação aplica isso a uma questão prática: o mercado está se comportando assim agora; quando ele já se comportou de maneira semelhante no passado e o que aconteceu depois? O indicador codifica a janela atual, analisa o histórico em busca de janelas passadas com formato semelhante, lê o futuro conhecido de cada correspondência e traça a distribuição resultante de resultados como um cone de previsão no gráfico, acompanhado de um painel de veredicto que apresenta as estatísticas por trás disso.
A transformação em si tem três etapas, cada uma com um propósito específico:
- Normalizar a janela por Z, para que o que reste seja apenas a forma pura. Uma alta no EURUSD e uma alta no ouro se mapeiam para a mesma curva normalizada se subirem da mesma maneira.
- Aproximação agregada por partes: dividir a janela normalizada em w segmentos iguais e substituir cada um por sua média. Uma janela de 48 barras com w = 8 se transforma em oito números, o que representa uma redução de dimensionalidade que suaviza o ruído ao longo do processo.
- Discretize: mapeie a média de cada segmento para uma letra usando pontos de ruptura que dividem a distribuição normal padrão em faixas de probabilidade igual, de modo que cada letra seja, a priori, igualmente provável.

O pipeline SAX: normalize a janela em z, calcule a média em células e, em seguida, mapeie cada célula para uma letra usando pontos de ruptura gaussianos.
O que torna a busca SAX precisa, e não apenas rápida, é o MINDIST, uma distância entre duas palavras que, comprovadamente, estabelece um limite inferior para a verdadeira distância euclidiana entre as séries normalizadas por z. Como ele só pode subestimar a distância real, pode ser usado para descartar candidatos sem o risco de descartar uma correspondência verdadeira. É isso que justifica a busca em duas etapas aqui: filtrar com a distância entre palavras de baixo custo e, em seguida, classificar os resultados restantes pela verdadeira distância euclidiana. O conjunto de testes de validação publicado confirma que o pipeline retorna exatamente as mesmas correspondências que o método de força bruta, ao mesmo tempo em que dispensa grande parte do trabalho.
O que o indicador representa
Dois objetos, ambos reconstruídos quando uma nova barra fecha.
O cone em leque projeta a distribuição futura dos análogos a partir da última barra fechada. Uma linha contínua traça o movimento mediano futuro a cada etapa, e as linhas pontilhadas acima e abaixo traçam os percentis 25 e 75; assim, o cone se alarga à medida que a concordância entre os precedentes se esvai. A distribuição por etapa é mantida em unidades de ATR e multiplicada pelo ATR atual para chegar ao eixo de preço real, o que permite que precedentes de períodos calmos e voláteis contribuam para o mesmo cone. O cone é traçado apenas quando o veredicto é de alta ou de baixa; portanto, a ausência do cone é, por si só, uma informação, e não uma falha de renderização.
O painel de veredicto apresenta os números que o cone oculta:
| Linha | O que isso indica |
|---|---|
| palavra | A codificação SAX da janela atual, a consulta na qual a busca foi efetivamente executada. |
| análogos | Quantos precedentes foram encontrados e sua distância média de correspondência. Um número elevado de resultados com uma distância média ruim é um caso mais fraco do que um número pequeno de correspondências próximas. |
| fwd H | Mediana do movimento para frente além do horizonte, em múltiplos de ATR e em porcentagem. |
| band | O intervalo entre o 25º e o 75º percentil desses movimentos para frente: a largura do cone, expressa numericamente. |
| taxa de alta | A proporção de precedentes que registraram alta, e a variação. Uma mediana que tende para cima com uma taxa de alta de 51% é fruto da sorte de um único precedente, não uma tendência. |
| VEREDITO | Alta, baixa, sem vantagem, poucos casos análogos ou ausência de dados. |
O veredicto é deliberadamente difícil de se obter. Primeiro se decide se há poucos casos análogos; depois, o caso de “cara ou cor”; e somente uma amostra que atenda a ambas as faixas de convicção recebe uma direção: o movimento da mediana deve exceder o limiar de vantagem em termos de ATR, e a taxa de alta deve sair da faixa em torno de 0,5. Se falhar em qualquer um desses critérios, a resposta é “sem vantagem”, independentemente do que a mediana indique.

O prognóstico para o EURUSD, M30: o cone em leque projetando a mediana e a faixa interquartil dos análogos, com o painel de veredicto informando a amostra por trás dele.
Principais Características
Honestidade por construção
- Sem antecipação. A janela de resultado de uma correspondência deve terminar estritamente antes do início da janela de consulta, para que nada do próprio futuro da consulta possa se infiltrar em seu conjunto de precedentes. Essa é a única proteção que separa uma busca por análogos de um ajuste de curva.
- Resultados normalizados pelo ATR. Os movimentos futuros são expressos em múltiplos do ATR vigente no momento da partida, de modo que um precedente de um período tranquilo e outro de um período volátil fiquem em pé de igualdade. Essa é a compensação pelo que a normalização z descartou.
- Um veredicto que tem permissão para dizer “não”. A ferramenta retém uma previsão e suprime o cone sempre que a amostra for muito pequena ou a tendência não for decisiva em ambas as medidas.
Uma biblioteca SAX de verdade, não uma aproximação dela
- Normalização z, PAA incluindo o caso fracionário em que o comprimento da janela não é divisível uniformemente pelo comprimento da palavra, pontos de ruptura gaussianos via probit de Acklam, codificação e um MINDIST que estabelece, de forma comprovável, um limite inferior para a distância real. Nada disso existia na plataforma anteriormente.
- São suportados tamanhos de alfabeto de 2 a 10, com pontos de ruptura definidos uma única vez no momento da configuração e armazenados em cache.
- Uma janela plana é relatada como plana, em vez de ser codificada silenciosamente: com um desvio padrão próximo de zero, não há forma a ser normalizada, e inventar uma produziria uma palavra sem sentido.
- Uma métrica euclidiana de força bruta é fornecida junto com o pipeline de produção como uma opção, para que a poda possa ser verificada em relação à resposta que deveria reproduzir, em vez de ser simplesmente considerada confiável.
Prático em um gráfico em tempo real
- A busca é executada uma vez por barra fechada, e não por tick, e lê o histórico a partir da barra 1, de modo que a barra em formação nunca entre nem na consulta nem no conjunto de precedentes.
- O tamanho da caixa do painel é definido com base no texto efetivamente renderizado, de modo que nada seja cortado em qualquer tamanho de fonte ou conteúdo, e são fornecidos temas claro e escuro para que a leitura seja fácil em qualquer fundo do gráfico.
- Cada objeto do gráfico possui um prefixo comum e é removido na função `deinit`, sem deixar nenhum objeto órfão para trás.
Configuração recomendada
| Parâmetro | Valor recomendado | Observações |
|---|---|---|
| Símbolo | Qualquer instrumento de mercado | A correspondência de formas é independente de escala por definição. O desenvolvimento e a captura de tela utilizaram o par EURUSD. |
| Intervalo de tempo | M30 a H4 | É necessário histórico suficiente para que o conjunto de precedentes seja significativo. A janela, o horizonte e a varredura do histórico são medidos em barras, portanto, são transferidos entre os intervalos de tempo sem alterações. |
| Histórico | 6.000 barras | A profundidade de análise padrão. Mais histórico significa mais precedentes e uma distribuição mais sólida, com um custo linear no tempo de busca. |
| Tema do painel | Combine com seu gráfico | Escuro por padrão. Mude para claro em um gráfico branco, caso contrário, o texto do corpo não ficará legível. |
Estrutura de arquivos
Um indicador e dois cabeçalhos. Os cabeçalhos são incluídos como <SAX\...>, portanto, devem ficar em sua própria subpasta SAX.
| Arquivo | Função | Descrição |
|---|---|---|
| Include\SAX\SAXTransform.mqh | A transformação | Normalização Z, PAA, pontos de ruptura gaussianos, codificação de palavras e MINDIST de limite inferior. Reutilizável em qualquer série, sem dependência de gráficos ou negociação. |
| Include\SAX\SAXAnalogs.mqh | A busca | Correspondência em duas etapas (poda e classificação), a proteção “no-lookahead”, resultados normalizados por ATR, a distribuição por etapa por trás do cone e a classificação do veredicto. |
| Indicators\SAX\SAXAnalog.mq5 | O indicador | Executa a busca em cada nova barra e desenha o cone de previsão e o painel de veredicto. Não plota nada nos buffers; tudo são objetos do gráfico. |
Parâmetros de entrada
| Entrada | Padrão | O que controla |
|---|---|---|
| InpWinLen | 48 barras | Comprimento da janela de consulta: qual a extensão da forma recente que deve coincidir para que uma barra seja considerada um precedente. |
| InpHorizon | 12 barras | Horizonte de previsão: até que ponto no futuro conhecido de cada precedente o resultado é medido e até onde o cone se estende. |
| InpWordLen, InpAlphabet | 8, 4 | A resolução do SAX. Palavras mais longas e alfabetos maiores permitem uma discriminação mais precisa e, portanto, resultam em menos correspondências; palavras mais curtas e alfabetos mais simples reúnem mais precedentes com semelhanças mais vagas. |
| InpMaxAnalogs, InpMinAnalogs | 50, 10 | Quantos precedentes mais próximos devem ser mantidos e a amostra mínima abaixo da qual o veredicto é forçado a “muito poucos”, independentemente do que esses poucos indiquem. |
| InpEdgeATR | 0,25 | Limite de convicção: o movimento mediano para frente deve ultrapassar um quarto de um ATR para ser considerado uma tendência. |
| InpMetric | MINDIST | O pipeline de duas etapas (poda e classificação), que é a configuração de produção. Mude para o Euclid para uma análise exaustiva de todos os candidatos: mesma classificação, sem poda, útil como referência de precisão e velocidade. |
| InpATRPeriod | 14 | O ATR usado para normalizar os resultados e escalar o cone no eixo de preço. |
| InpMaxHistory | 6.000 barras | Até que ponto no passado se deve procurar por precedentes. |
| Cores, canto, tema | Azul / vermelho / cinza, canto superior esquerdo, escuro | Cores de destaque do cone e do painel de acordo com o veredicto, a cor da linha da faixa, o canto âncora do painel e o tema claro ou escuro. |
Base de pesquisa
A implementação segue o trabalho original do SAX de Jessica Lin, Eamonn Keogh e colegas, cuja página do SAX reúne os artigos.
O SAX não é uma bola de cristal para preços, e esta ferramenta reportará “nenhuma vantagem” com mais frequência do que qualquer outra informação. Seu valor reside nas raras ocasiões, bem fundamentadas, em que muitos precedentes genuínos apontam na mesma direção, e na disciplina de uma ferramenta que se recusa a fingir o contrário. A mesma biblioteca abre espaço para trabalhos futuros: palavras do SAX como características categóricas para um modelo de aprendizado de máquina, descoberta de motivos e discordâncias para detecção de anomalias ou um modelo de transição de Markov sobre o dicionário de palavras.
Um artigo complementar deriva a transformação e o limite inferior, detalha a pesquisa e suas condições de segurança e mostra a aprovação do conjunto de testes de validação: Aproximação Agregada Simbólica (SAX) em MQL5: Pesquisa e Previsão de Analogias Históricas.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/75543
Trade Journal and Performance Analytics Dashboard
Um painel leve integrado ao gráfico que analisa seu histórico de operações fechadas e exibe a taxa de acerto, o fator de lucro, sequências de resultados e uma curva de patrimônio — sem necessidade de inserir estratégias, apenas seus próprios números, atualizados automaticamente.
SHK Heikin Ashi MACD Signal Arrows
Um indicador gráfico para o MetaTrader 5 que traça velas Heikin Ashi, setas de compra e venda confirmadas, filtragem opcional de divergência do histograma do MACD e alertas configuráveis.
Global Macro Soros
Global Macro Soros. Um indicador de concordância de tendências em múltiplos intervalos de tempo, inspirado no estilo de negociação macroeconômica de George Soros.
Trade Manager Panel Simple Interactive Chart Trading Tool with Risk Management for MT5
Um painel simples de gerenciamento de negociações em MQL5 que oferece linhas de gráfico com recurso de arrastar e soltar, dimensionamento dinâmico de lotes com base na porcentagem de risco, modos de Stop Loss por ATR/ponto e monitoramento em tempo real do lucro e prejuízo (P/L) variável.