Dois testes do mesmo robot podem produzir resultados diferentes com parâmetros visíveis iguais. Antes de alterar a estratégia, confirme se código, dados, contrato e modelo de execução também coincidem. Um manifesto regista condições declaradas, mas texto igual não demonstra ambiente idêntico. Guarde os relatórios e operações que sustentam cada declaração, incluindo o resultado menos favorável.

Preserve evidência antes de repetir

Arquive relatórios, listas de execuções, diários e parâmetros de ambas as corridas. Uma captura da curva de capital próprio não revela primeiro preço, número de execuções parciais ou início efetivo. Precisa de ligar condições, decisões e operações ao resultado. Distinga teste único, pesquisa de otimização e avaliação num período posterior.

«Mesmo robot» pode significar nome igual com compilação ou dependência diferente. Conserve build do terminal, programa e bibliotecas relevantes. Nome de ficheiro não identifica conteúdo. Compare data solicitada e efetiva: a documentação MetaQuotes explica que histórico anterior insuficiente pode deslocar o início. Um mês completo e um período recortado são avaliações diferentes.

O verificador de cobertura CSV examina uma exportação; o manifesto abrange condições mais amplas. Nenhum dos dois certifica sozinho a execução. Não apague a única cópia de dados ou recompilhe antes de preservar o que tenta explicar.

Treze campos canónicos, sem traduzir chaves

Cole dois objetos JSON com exatamente estes nomes: version, platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState. São doze campos de conteúdo e version. Não traduza chaves nem acrescente campos principais. A versão de formato é o número 1, não versão do EA.

O que documentar em cada grupo
CamposEvidência associada
version, platform, build, codeRevisionFormato, plataforma, build e identificação de código/dependências.
inputs, dataSnapshotParâmetros e arquivo dos dados utilizados.
symbolSpecification, executionModel, costsContrato, regras de simulação e custos.
requestedStart, actualStart, endLimites pedidos e efetivos com fuso explícito.
initialStateDepósito, posições e condições relevantes de inicialização.

Os valores principais são cadeias de texto, exceto version=1. inputs, costs e initialState também aceitam objetos. Para números da especificação, use cadeias com ponto decimal; a prosa portuguesa usa vírgula. Vazio ou omissão significa desconhecido, não condição confirmada como zero.

dataSnapshot pode conter identificador de arquivo ou checksum calculado separadamente. Escrever «data-v1» não inspeciona ficheiro; chamar hash a codeRevision não o verifica. Use rótulos técnicos sem palavras-passe, códigos de acesso ou dados pessoais. Marque o que falta apurar, sem inventar versão para preencher a ficha.

Registe datas com fuso e representação consistente, preferencialmente UTC. O comparador não converte calendários ou descrições equivalentes do mesmo instante. Acrescentar Z a uma hora do servidor não a converte para UTC. Identifique separadamente Europe/Lisbon, fuso do servidor e instante convertido; não copie apenas o número das horas.

Comparar declarações não é correr um teste

Edite os dois registos de exemplo, compare e reveja diferenças e declarações em falta. A ferramenta funciona no navegador, sem enviar dados, importar ficheiros ou guardar entradas persistentemente. Permite limpar o resultado e descarregar o relatório. Não corre MT5, lê conta ou confirma correspondência entre declarações e testes reais.

Compare dois registos de backtest

A análise é local no navegador. A ferramenta não envia dados nem os guarda persistentemente. Não introduza palavras-passe ou dados pessoais.

Use o esquema documentado com version: 1. Registe números da especificação como cadeias com ponto decimal. Campos vazios ou ausentes são desconhecidos. Cada registo está limitado a 64 KiB.

Formato JSON: campos e limites

version: 1. Outros campos aceites: platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState.

Valores principais são cadeias de texto. inputs, costs e initialState também podem ser objetos. Vazio ou omissão significa desconhecido. Chaves duplicadas e campos principais não documentados são rejeitados. Limites: 8 níveis e 2000 valores; números aninhados até 15 algarismos significativos, excluindo inteiros grandes inseguros. Use datas com fuso explícito. A comparação é literal e não uniformiza descrições ou formatos de datas.

Cada registo está limitado a 64 KiB, oito níveis e 2000 valores. Chaves duplicadas e campos principais não documentados são rejeitados. Números aninhados admitem até quinze algarismos significativos, excluindo inteiros grandes inseguros. A comparação é literal quanto às descrições; uniformize formatos quando necessário, sem alterar o instante que pretendem representar.

Sem JavaScript, instruções e exemplos continuam legíveis; não há envio alternativo do formulário. Dois objetos iguais demonstram entradas iguais, não condições totalmente especificadas. Conserve arquivos e histórico por trás das chaves; uma biblioteca omitida ou estado inicial descrito incorretamente pode explicar a diferença restante.

Uma operação, duas comissões

Modelo original fictício: contrato linear, conta USD, uma operação fechada com duas execuções. Resultado de preço 10 USD, preços, quantidade e período iguais; financiamento e outros encargos zero. A declara comissão 1 USD por execução; B declara 2 USD. Não são preços de uma corretora.

A produz 10−2 × 1=8 USD. B produz 10−2 × 2=6 USD. A diferença de 2 USD é explicada apenas pela comissão nestes pressupostos. Não demonstra pior sinal, dados incorretos ou deslizamento. O comparador deve assinalar o campo costs, em particular commissionPerFillUSD, mas a interpretação ainda exige conferir o relatório e restantes condições.

Mesma operação, custos declarados distintosModelo USD linear, uma operação, duas execuções, preço 10 USD, outros custos zero.EXEMPLO DE CÁLCULOCorrida A10−2 × 1=8 USDCorrida B10−2 × 2=6 USDDiferença2 USD
Mesma operação, custos declarados distintos. Modelo USD linear, uma operação, duas execuções, preço 10 USD, outros custos zero.

Comissão explica diferença 2 USD neste modelo, não prova ambiente correto.

Corrida A
10−2 × 1=8 USD – Comissão 1 USD por execução
Corrida B
10−2 × 2=6 USD – Comissão 2 USD por execução
Diferença
2 USD – Verificar campo costs e relatório

Num exemplo adicional independente em EUR, resultado de preço 30 EUR e comissão 2 EUR por execução dão 26 EUR com duas execuções ou 24 EUR com três. A diferença 2 EUR vem do número faturado, mantendo resultado de preço. Uma operação pode ter execução parcial: confira se o contrato real cobra por negócio, lote ou outra base. O exemplo não presume tarifa real nem converte os valores USD.

Se parece igual, procure o primeiro evento diferente

Compare hora do sinal, símbolo, lado de cotação, quantidade e motivo de entrada/saída. Guarde não entradas. O saldo final pode esconder diferença desde a leitura inicial de indicador. Repita de modo controlado, mudando uma condição e conservando relatório anterior, inclusive quando contraria a explicação inicial.

Confira dependências e inicialização. O agente de teste tem variáveis globais e operações de ficheiro distintas do terminal; se usa aleatoriedade, conserve a inicialização do gerador. Não atribua tudo a cache nem escolha a corrida com mais lucro como automaticamente correta. Recompilar é outra mudança: retenha executável e ambiente anteriores.

Uma igualdade de declarações pode estreitar a investigação sem excluir elemento omitido. Depois de explicar condições, retome avaliação económica com custos, drawdown e dados separados do ajuste. O registo de versões e evidência organiza o estudo e o guia MT4/MT5 descreve configurações. O comparador não prevê retornos futuros nem certifica resultados históricos.

Três ações depois da comparação

  1. Conserve A e B separadamente, preencha os treze campos e ligue identificadores aos arquivos de código, dados e parâmetros realmente utilizados.
  2. Escolha uma diferença e reconcilie efeito num exemplo curto: número de execuções e comissão ou início efetivo e primeiro sinal disponível.
  3. Se declarações coincidem, encontre o primeiro evento divergente, conserve os inputs e acrescente a dependência ou condição de inicialização em falta.