Neste artigo
Depois deste artigo, saberá…
- Preencher treze campos sem inventar versões ou traduzir chaves.
- Reconciliar diferença de comissão por execução antes de atribuir falha ao sinal.
- Preservar arquivos e investigar o primeiro evento diferente quando as declarações coincidem.
Conceitos sem sair do artigo
Backtesting: teste histórico de regras Comissão Expert Advisor (EA)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.
| Campos | Evidência associada |
|---|---|
| version, platform, build, codeRevision | Formato, plataforma, build e identificação de código/dependências. |
| inputs, dataSnapshot | Parâmetros e arquivo dos dados utilizados. |
| symbolSpecification, executionModel, costs | Contrato, regras de simulação e custos. |
| requestedStart, actualStart, end | Limites pedidos e efetivos com fuso explícito. |
| initialState | Depó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
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.
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
- Conserve A e B separadamente, preencha os treze campos e ligue identificadores aos arquivos de código, dados e parâmetros realmente utilizados.
- 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.
- 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.
Verifique o que aprendeu
Aprox. 2 minutos de prática.
Ver resposta e explicação
A deixa 8 USD; B 6 USD. Diferença 2 USD, só pela comissão estipulada.
Mais perguntas
Manifestos iguais certificam reprodução?
Não. Igual texto em dataSnapshot não identifica arquivos reais. Preserve código, dados, relatórios e parâmetros; calcule hashes separadamente. Pode faltar dependência, estado inicial ou custo corretamente descrito.
Devo limpar cache ou recompilar primeiro?
Arquive ambas as corridas antes de alterar. Compare condições e primeira execução divergente, teste uma mudança e preserve executável anterior se recompilar. Não elimine a única cópia dos dados da observação.
Porque requestedStart difere de actualStart?
O teste também precisa de histórico anterior. A documentação MT5 descreve deslocação possível por dados prévios insuficientes. Guarde ambas as datas e confira diário, histórico e modelo em vez de copiar o pedido como início confirmado.
Devo escolher o resultado mais lucrativo?
Primeiro explique a diferença. No modelo, mais lucro vem só de comissão menor, não sinal melhor. Depois avalie estratégia com condições adequadas e dados separados. O formulário não valida hipóteses nem rentabilidade futura.
Fontes e verificação
- MetaQuotes — Strategy Testing
Configuração de teste/otimização, período, modelo, custos e comissões por execução/direção.
- MetaQuotes — How the Tester Downloads Historical Data
Preparação de histórico e possível deslocação de início efetivo por dados anteriores insuficientes.
- MetaQuotes — Testing Features
Ambiente de agente, variáveis globais e ficheiros distintos do terminal; preservar dependências e inicialização.
Os cálculos usam pressupostos explícitos. Não substituem os dados atuais do mercado nem as condições do prestador.
