Indicator Test Report
- Utilitários
-
Narayanan Mohanan Mohanan Krishnan
Construo ferramentas de medição para MetaTrader. Descrevem o que o mercado já fez e declaram os limites de cada medição em vez de os esconder. - Versão: 3.10
Indicator Test Report para MetaTrader 5 — um verificador de repintura e testador de indicadores que mostra como qualquer indicador realmente se comporta
Você não pode ver o interior de um indicador compilado. O Relatório de Teste de Indicadores carrega qualquer indicador — comprado, escrito ou incorporado no MetaTrader — e responde à pergunta que uma descrição não pode: ele é redesenhado, de quanto histórico ele precisa e o que ele realmente publica? Ele relata comportamento. Não dá nota.
Carregue qualquer indicador no Testador de Estratégia e obtenha um relatório em linguagem simples sobre doze aspectos de seu comportamento: quantos buffers ele publica, quanto histórico ele precisa antes que seus valores signifiquem alguma coisa, se os valores nas barras fechadas mudam depois e quanto custa para ler.
Não há pontuação, nota de aprovação e nenhum veredicto sobre se um indicador é bom – apenas o que foi observado e o que isso prova ou não.
O que isso responde
1. Tampões.Quantas séries de dados numeradas o indicador realmente publica e o índice mais alto que responde. Muitas vezes, isso é mais do que o gráfico mostra: um indicador de duas linhas pode publicar seis buffers, e uma leitura do EA por índice precisa do número real. Onde os índices não são contíguos, o relatório diz isso – a indexação por contagem leria a série errada.
2. Estado de cálculo.Quantas barras o alvo computou em relação a quantas existem. Zero com buffers preenchidos é um estado real nomeado, não um erro.
3. Estabilidade em barra fechada.O primeiro valor visto para cada barra é congelado e depois comparado com cada leitura posterior. Se um valor em uma barra já fechada for alterado posteriormente, o relatório fornecerá o tempo da barra, o índice do buffer e ambos os valores. Uma barra de corrente em movimento não é repintada – recalcular a barra de formação é correto e desejável. O que importa é uma barra fechada cujo valor muda posteriormente.
4. Aquecimento.O número de barras que cada buffer precisa antes de manter qualquer valor, medido nas barras mais antigas disponíveis, e não na janela recente, onde todas as respostas seriam zero. Os buffers diferem legitimamente: uma linha de sinal precisa de mais histórico do que a série que suaviza. As primeiras cinquenta barras do seu gráfico podem não ser significativas ainda.
5. Cintilação do sinal intrabar.Se a barra formadora pisca entre vazio e um sinal numérico antes de fechar. Normal para um indicador de sinal; importa se o seu EA atua na barra de formação.
6. Custo de acesso ao buffer.O custo em microssegundos de recuperação de valores, por barra, para que você possa orçar um EA que leia vários valores por tick. Números relativos para comparação de indicadores, não números absolutos de VPS.
7. Domínio de saída.O menor e o maior valor emitido por cada buffer, com dezesseis casas decimais — para limites de dimensionamento em um EA. Estes são o intervalo observado, nunca o intervalo possível.
8. Persistência de sinal.Para setas, pontos e bandeiras: se um valor aparecesse na barra em formação, ele ainda estava lá no fechamento? As linhas contínuas pontuam 100% por construção e são marcadas como tal, porque esse número é aritmético e não uma descoberta.
9. Valores que não são numéricos.Se algum buffer emitiu um valor que não é um número. Cada comparação com um NaN é falsa - incluindo maior que e menor que - então um teste de limite nunca é acionado e não relata nenhum erro, e qualquer aritmética que toque um produz NaN por sua vez. Isto é um defeito no alvo e é invisível para um guarda escrito contra EMPTY_VALUE sozinho.
10. Gráfico da pegada do objeto.Quantos objetos gráficos apareceram enquanto o alvo era executado e — em um gráfico ao vivo — quantos ainda estavam lá depois que ele foi removido. Os indicadores de painel, zona e painel são desenhados com objetos em vez de buffers, portanto, para esses produtos, todas as outras verificações medem a metade vazia. Um indicador que não limpa deixa detritos que você limpa manualmente.
11. Dependência do modelo.Execute duas vezes apenas com o modelo do testador alterado. Cada Tick e OHLC de 1 Minuto são diferentes trajetórias de preços simuladas, portanto, um indicador que reage deliberadamente ao movimento intrabarra pode ser legitimamente diferente. É importante quando o alvo afirma que os valores da barra fechada são finais.
12. Dependência histórica.Execute duas vezes apenas com o intervalo de datas alterado. Uma diferença significa que o alvo reporta valores diferentes para a mesma barra dependendo de quanto histórico a precedeu – o defeito que faz com que um backtest discorde de um gráfico ao vivo.
Experimente em algo que você já conhece
Ele lê qualquer coisa acessível através iCustom, incluindo os próprios indicadores do MetaTrader. Aponte para o ZigZag: todo mundo conhece as repinturas do ZigZag, e o relatório mostrará as barras que mudaram e ambos os valores. Aponte-o para Ichimoku e observe os dois períodos alterados para o futuro se comportarem de maneira diferente dos três que não o são. Comparar a ferramenta com um indicador cujo comportamento você já conhece é a maneira mais rápida de decidir se deve confiar nela em uma que você acabou de comprar – e não custa nada.
Como esta ferramenta foi testada
Cada verificação foi verificada em relação a indicadores criados especificamente que se comportam mal deliberadamente: um que reescreve todas as barras de seu histórico a cada tick, um que emite valores que não são números, um que precisa de 399 barras de aquecimento, um que deixa objetos do gráfico para trás quando é removido. Os verificações os detectaram, com os horários das barras e os valores de antes e depois. Uma ferramenta que reporta os indicadores de outras pessoas deve ser capaz de dizer como foi testada.
Os motores também funcionam uns contra os outros. O mesmo indicador medido no MetaTrader 4 e MetaTrader 5 concorda em dez das doze verificações; os dois que diferem são fatos da plataforma, rotulados no relatório — o MetaTrader 4 não tem BarsCalculated e não há forma de descarregar um indicador antecipadamente, pelo que essas verificações dizem o que não puderam medir, em vez de reportarem um zero confortável.
Se você escrever indicadores em vez de comprá-los
O mesmo relatório responde a uma pergunta diferente: o que meu produto realmente faz, e posso dizer isso na descrição? Uma afirmação de que os valores da barra fechada são finais vale mais quando se trata do número de comparações por trás dela - e é melhor você mesmo encontrar uma repintura do que deixar um revisor encontrá-la.
Execute-o em ambas as plataformas e o par mostrará onde suas compilações MT4 e MT5 divergem: diferentes contagens de buffer, um aquecimento que se moveu, um valor que muda em uma e não na outra. Essa divergência normalmente chega até você como uma avaliação de uma estrela de alguém que comprou os dois.
O snippet gerado é a documentação de integração que você escreveria à mão — cada buffer nomeado, com seu aquecimento, seu intervalo e se ele fica vazio. Envie-o ou cole-o em sua própria descrição. É o comportamento do seu produto, medido, não uma afirmação.
O que não faz
Ele não dirá se um sinal tem vantagem, se vale a pena comprar um indicador ou se uma estratégia é lucrativa. Não classifica, pontua ou classifica. Ele não lê código-fonte – apenas comportamento observável através da interface de buffer documentada. Ele executa o destino em suas próprias entradas padrão.
Uma descoberta não é uma falha
Repintura, um longo aquecimento, movimento intrabarra e objetos gráficos são opções de design, e muitos bons indicadores as fazem deliberadamente. Esta ferramenta mede o que aconteceu; apenas a descrição do próprio vendedor pode dizer se a intenção era essa. Todo relatório traz essa frase, e mais uma: se algo te surpreender, pergunte ao desenvolvedor. Um relatório é uma boa pergunta para fazer a um vendedor. Não é evidência para publicar contra eles, e não foi construído para ser.
Um resultado limpo não é prova
Cada Relatório de Teste de Indicador diz isso em seu próprio texto. Uma execução é um símbolo, um período de tempo, um período, um modelo de testador. O relatório afirma quais verificações uma determinada execução não pôde ser testada – uma execução com poucos ticks não pode testar o comportamento intrabarra, e diz isso em vez de relatar um zero confortável. A ausência de uma observação não é prova de ausência.
Cada relatório termina com um resumo em uma tela de todas as doze verificações, além de uma tabela de todas as execuções anteriores no mesmo alvo, de modo que várias execuções em condições diferentes possam ser lidas como um conjunto.
Entradas
- Nome do indicador— o alvo, exatamente como aparece no Navegador, incluindo sua pasta. Um produto de mercado fica abaixo Market\ e seu próprio nome; as amostras do MetaTrader em Examples\. Errar é o único erro que interrompe a corrida, e o relatório diz isso em linguagem simples, em vez de falhar silenciosamente.
- Espere por tantas barras primeiro— o relatório não começa até que o gráfico contenha todo esse histórico. Padrão 500.
- Bares fechados para observar a repintura- há quanto tempo cada tick relê e compara. Esta é a profundidade da verificação 3. Padrão 300.
- Novas barras para assistir antes de reportar — o tamanho da amostra.A execução termina após o fechamento de tantas barras, portanto, um número menor é um teste mais fraco, não um atalho. Padrão 200.
- Histórico máximo para sondar o aquecimento— até onde procurar o primeiro valor real em cada buffer. Padrão 10.000.
- Tolerância para verificações numéricas de repintura— abaixo disso, uma diferença é tratada como ruído de ponto flutuante em vez de uma mudança. Escala com a magnitude dos valores, de modo que uma série de preços e uma série de volumes são julgadas nos mesmos termos. Padrão 0.00000001.
- Linha de base: Auto/Bloquear/Redefinir- decide com o que uma segunda execução se compara. Auto é o que a maioria das pessoas quer dizer com executar um alvo duas vezes: a primeira execução define a referência e as execuções posteriores comparam sem substituí-la. Automático padrão.
- Executar rótulo- como você declara o que mudou entre duas execuções. O MetaTrader não oferece ao programa nenhuma maneira de ver qual modelo de testador está em execução, portanto, o rótulo é a única maneira de o relatório distinguir uma mudança de modelo de uma repetição.
- Nome de exibição de destino— um nome legível para o cabeçalho do relatório. O caminho do arquivo ainda é mostrado ao lado dele, pois um nome de exibição nunca deve substituir a identidade do que foi medido.
- Escreva um snippet de EA pronto para uso– ativado por padrão. Desligue-o se desejar apenas o relatório.
- Prefixo do arquivo de saída— permite que duas execuções no mesmo destino sejam gravadas em arquivos separados, em vez de compartilhar um resumo.
O que as capturas de tela mostram
- O instantâneo.Todas as doze verificações em uma tela — cada execução termina com este bloco, independentemente do que o relatório contenha.
- Uma descoberta.Uma barra fechada cujo valor mudou, com o tempo da barra e ambos os valores. É para isso que serve a ferramenta; o resto é contexto.
- Ambas as plataformas.O mesmo indicador medido no MetaTrader 4 e MetaTrader 5, portanto os dois relatórios podem ser comparados linha por linha.
- Uma recusa honesta.Uma execução que não conseguiu testar algo e diz isso, em vez de imprimir um zero que seria lido como aprovado.
- O trecho gerado.O .mqh arquive as gravações de execução, com cada buffer nomeado e uma função de leitura já escrita.
Lendo as capturas de tela
Âmbar não é vermelho.Um veredicto âmbar significaum comportamento foi encontrado e aqui está a evidência, nãoeste indicador está quebrado. Repintura, um longo aquecimento e objetos gráficos são escolhas de design, e muitos bons indicadores os fazem deliberadamente - o relatório fornece o tempo da barra e ambos os valores para que você possa perguntar ao desenvolvedor sobre isso, que é o que a página lhe diz para fazer.
Os veredictos azuis são os que vale a pena entender. [NOT TESTED] e[NOT FOUND] significa que a execução não conseguiu medir algo – poucos ticks ou uma varredura que atingiu seu teto. Eles não são passes. A maioria das ferramentas imprimiria um zero confortável ali; este indica que a pergunta não foi respondida, que é a diferença entre uma medição e uma garantia.
A imagem de paridade mostra o mesmo indicador medido em ambas as plataformas para que os dois relatórios possam ser comparados linha por linha. A descoberta mostrada nas imagens vem de um indicador de teste deliberadamente quebrado, escrito para esse fim, e não de um produto no Mercado.
Sobre as capturas de tela.Cada imagem é capturada de uma execução real: os relatórios são os arquivos que a ferramenta grava, não os modelos. A compilação do MetaTrader 4 tem suas próprias imagens capturadas no MetaTrader 4, porque dois dos doze verificações são legitimamente lidos de forma diferente lá e mostrar a saída do MetaTrader 5 em uma listagem do MetaTrader 4 iria deturpá-la. A imagem de paridade mostra as duas plataformas lado a lado no mesmo indicador: dez das doze verificações são idênticas e as duas que diferem são nomeadas no relatório. Esses dois são uma questão do que a PLATAFORMA pode fornecer, não de quão cuidadosamente o porte foi escrito: MQL4 não tem BarsCalculated função e não há maneira de descarregar um indicador antecipadamente. Nada foi deixado de fora da construção do MetaTrader 4 — ele relata tudo o que o MetaTrader 4 é capaz de relatar, e diz isso onde não pode. Esta ferramenta foi criada para indicar o que não foi possível medir, e isso se aplica primeiro à sua própria listagem.
Saída
Um relatório de texto, uma linha de base CSV para comparação entre execuções e um resumo acumulado (uma linha por execução) gravado na pasta Arquivos compartilhada para que eles sobrevivam entre as execuções. Cada valor diferente é gravado em seu próprio CSV quando uma comparação encontra um.
E um trecho de código pronto para uso: um arquivo compilável .mqh nomeando cada buffer ativo, seu aquecimento, seu intervalo observado e se ele fica vazio — com uma função de leitura já escrita para a plataforma em que você executou. É o que de outra forma um interlocutor descobriria através de um teste. Se a execução encontrou alterações na barra fechada ou valores NaN, o snippet diz isso na parte superior e aponta seu exemplo para um buffer sem nenhuma descoberta.
Crédito onde é devido
A abordagem de leitura de buffer segueTestador de Indicador ICustompor Piotr Latoszynski, gratuito no Mercado desde 2020. O método congelar e comparar para detectar valores alterados de barras fechadas foi descrito por Brahim Ben Abla em mql5.com post 772704 (17 de julho de 2026), com números reais; o método é dele, só o frete é meu.
Notas
- Este é um Expert Advisor que escreve um relatório. Nunca é negociado.Ele não faz ordens, não abre e fecha posições e não toca em nada na sua conta – ele lê um indicador e grava arquivos de texto.
- A negociação automática deve estar habilitada.O MetaTrader protege cada Expert Advisor por trás dessa permissão, independentemente de ele negociar ou não, então, com o botão desligado, o terminal para de chamar o programa e você não verá nenhum relatório e nenhum erro. Anexe-o a uma conta demo se preferir não ativá-lo em uma conta ativa; o resultado é idêntico, porque nada aqui depende da conta.
- É executado no Testador de Estratégia e em um gráfico ao vivo onde uma verificação precisa de ticks reais. Lê o alvo através do documentado iCustom interface.
- Algumas metas que constroem seus próprios indicadores internamente nunca relatam um estado calculado. O relatório nomeia esse caso em vez de reportar um zero.
- A saída vai para a pasta Arquivos compartilhada, para que os relatórios sobrevivam entre as execuções e acumulem uma linha de resumo cada.
- Várias instâncias são suportadas.Dois gráficos podem medir símbolos diferentes ao mesmo tempo, e ambas as execuções são anexadas ao mesmo resumo acumulado, em vez de se sobrescreverem – testadas com duas instâncias terminando com um segundo de diferença. Forneça a eles prefixos de saída diferentes se preferir manter os dois históricos separados.
- Sem dependências externas. Não chama nenhuma biblioteca e nenhum outro indicador.
| Mais ferramentas deste desenvolvedor Desenvolvo indicadores MetaTrader e Expert Advisors com ênfase em código limpo e documentado: lógica de barra fechada, buffers validados e sem dependências de outros indicadores. Esta ferramenta existe porque eu queria verificar essa afirmação no meu próprio trabalho antes de pedir que alguém acreditasse nela. Veja todos os produtos publicados → Encontrou algo inesperado em um relatório ou quer uma verificação que os doze não cobrem? Envie-me uma mensagem privada - terei prazer em responder. |
Desenvolvido e mantido por Narayanan Mohanan, ML/Python/MQL Developer.
Se encontrar algum erro na tradução desta página, entre em contato comigo e farei a correção.
