Neste artigo
Depois deste artigo, saberá…
- Preparar CSV com timestamp explícito e contar posições na janela inclusiva.
- Distinguir lacuna, duplicado, conflito OHLC e linha fora da grelha.
- Registar limitações do ficheiro antes de configurar o tester.
Conceitos sem sair do artigo
Backtesting: teste histórico de regras Bid e Ask Expert Advisor (EA)Uma vela em falta não demonstra se o fornecedor falhou ou o mercado estava fechado. Compare primeiro o ficheiro com uma janela declarada e com as regras de construção das velas. O verificador local deste artigo encontra posições vazias numa grelha fixa, instantes repetidos, preços em conflito e linhas inválidas. Não inventa cotações nem aprova a rentabilidade de um backtest.
Defina a série antes de contar
Registe instrumento, fornecedor, base de preços e período. Velas Bid, Ask e ponto médio são séries diferentes; «EUR/USD» não basta. Compare horas de abertura equivalentes. Um ficheiro marcado pelo fecho parece deslocado face a outro marcado pela abertura, mesmo que ambos contenham observações válidas. A documentação OANDA distingue estes componentes e parâmetros de alinhamento; não os substitua por pressupostos do seu ecrã.
O formato suportado tem exatamente o cabeçalho timestamp,open,high,low,close e cinco campos separados por vírgulas em cada linha. Preços usam ponto decimal e não separador de milhares. Aspas, colunas adicionais e CSV com ponto e vírgula precisam de conversão documentada; a ferramenta rejeita formatos não suportados em vez de adivinhar. A convenção do ficheiro permanece técnica, mesmo numa instalação portuguesa com vírgula decimal.
Use um timestamp completo, por exemplo 2026-10-12T08:00:00Z ou 2026-10-12T10:00:00+02:00: representam o mesmo instante. Segundos são obrigatórios e admitem-se até três casas de fração de segundo. Uma hora sem offset não identifica o fuso do servidor. Acrescentar Z a uma hora local não a converte para UTC: muda o significado. Como contraprova própria, 10:00+02:00 é 08:00Z; trocar apenas o sufixo por Z cria um desvio de 120 minutos.
Declare primeira e última abertura esperadas, ambas incluídas. De 08:00 a 08:11, a um minuto, são doze posições. A grelha ancora na primeira fronteira e a última deve cair exatamente nela. Este modelo usa intervalos de tempo decorrido iguais: um mês de calendário ou dia local com mudança de hora não equivale a assumir sempre 1440 minutos. Portugal continental e Açores também não partilham a mesma hora local; os offsets explícitos evitam confundir idioma e fuso.
Executar o exemplo controlado
Selecione o CSV, intervalo inteiro entre 1 e 1440 minutos e as duas fronteiras. A análise ocorre no navegador sem enviar o conteúdo ou o guardar persistentemente. Limites: 2 MiB, 100000 linhas e 100000 posições esperadas. Divida períodos maiores em janelas não sobrepostas e documente fronteiras. Cada preço admite até quinze algarismos significativos e 48 caracteres; precisão maior é inválida, não arredondada silenciosamente para esconder um conflito.
Verificar cobertura da grelha temporal CSV
O ficheiro é analisado localmente; a ferramenta não o envia nem o guarda persistentemente. Formato: timestamp,open,high,low,close. Máximo 2 MiB. Timestamps exigem Z ou offset explícito.
Os ficheiros de treino são sintéticos, não cotações de corretora nem dados de conta. Escolha M1 de 08:00 a 08:11 UTC. O exemplo limpo contém doze instantes distintos e nenhuma posição vazia. O diagnóstico tem doze linhas, mas só oito posições válidas ocupadas. A contagem de linhas coincide com a expectativa sem demonstrar cobertura.
| Achado | Significado neste modelo |
|---|---|
| 4 posições vazias | 08:03, 08:04, 08:10 e 08:11 sem vela válida |
| 2 linhas repetidas | 08:02 e 08:06 aparecem novamente |
| 1 grupo de conflito | Duas velas válidas em 08:06 têm OHLC diferentes |
| 1 linha inválida | Máximo de 08:04 inferior à abertura |
| 1 fora da grelha; 1 inversão | 08:07:30 não pertence a M1; 08:08 aparece depois de 08:09 |
A contagem de linhas esconde lacunas e preços ambíguos.
- Sem vela válida
- 08:03; 08:04; 08:10; 08:11 – Quatro posições vazias
- Posição 08:06
- Duas velas válidas discordam – Ocupa a grelha mas precisa de investigação
- Cobertura
- 8/12≈66,67% – Não é percentagem de dados aprovados
As maiores lacunas contêm duas aberturas esperadas cada. Num empate, o resultado indica a primeira: 08:03–08:04. Não é medição da duração de uma interrupção. A cobertura distinta é 8/12≈66,67%; como extensão própria, isso não significa «66,67% de dados utilizáveis», pois o instante 08:06 continua com preços contraditórios. Quantidade e ambiguidade respondem a perguntas separadas.
Investigue em vez de reparar automaticamente
Um duplicado idêntico não aumenta cobertura. Dois OHLC diferentes e válidos no mesmo timestamp ocupam uma posição e geram conflito: zero posições vazias pode coexistir com preços por resolver. Conserve ambas as versões e confira a fonte. O verificador não escolhe a mais alta, mais recente ou conveniente. Ordenar linhas não resolve um conflito no mesmo instante.
Uma linha inválida não ocupa posição. Preços devem ser finitos; máximo não pode ficar abaixo da abertura, fecho ou mínimo, e mínimo não pode exceder os restantes preços. Linhas fora da janela ou grelha não melhoram cobertura. Todos os achados são contados, mas mostram-se só vinte exemplos por grupo para manter o relatório legível. Não interprete o limite de apresentação como limite de erros detetados.
Compare lacunas de fim de semana com o horário do produto. Dentro da sessão declarada, investigue logs de descarga e origem. Na API OANDA, complete significa que o período da vela terminou, não que toda a exportação está íntegra. Preencher vazio com o último preço cria velas sintéticas que podem alterar indicadores e simulação de stops. Preserve original e registo separado de correção, motivo e fonte.
OHLC completo não prova ticks registados
Uma vela não descreve a sequência completa de preços. MetaQuotes documenta ticks gerados quando existe vela de minuto sem os respetivos ticks. Assim, um CSV M1 sem lacunas não prova que o tester usou exclusivamente observações registadas. Consulte diário, período disponível e modo selecionado. Compare datas pedidas com datas efetivamente testadas; história insuficiente pode deslocar o início do teste.
Ao exportar com CopyRates, confira número pedido e devolvido; uma resposta parcial pode ocorrer enquanto a história ainda é obtida. Não trate o número de linhas desejado como número confirmado. Depois veja o guia de testes MT4/MT5 e a metodologia de backtesting. Estes controlos não certificam comportamento da estratégia, spreads históricos, custos ou ordem das execuções.
Três ações com o relatório
- Guarde exportação original, definições e resultado, incluindo instrumento, base de preço, fuso e fonte do horário. Outra pessoa deve conseguir repetir exatamente a janela.
- Investigue a maior lacuna e todos os conflitos. Documente sessão fechada confirmada ou obtenha ficheiro corrigido; volte a executar a mesma janela e preserve o relatório anterior.
- Num intervalo aceite, faça um teste visual curto e examine sinais junto dos achados, custos e sequência. Dados sem lacunas não estabelecem lucro futuro nem fiabilidade global do fornecedor.
Verifique o que aprendeu
Aprox. 2 minutos de prática.
Ver resposta e explicação
12−8=4. Duplicados e linhas fora da grelha não acrescentam posições.
Mais perguntas
Uma vela em falta prova erro do fornecedor?
Não. O verificador desconhece horário e regras de publicação do produto. Compare sessão, fuso e logs antes de atribuir causa. Preserve a fonte do calendário e não insira preço sem investigação.
Como podem coexistir zero lacunas e conflito?
Uma posição com dois OHLC válidos diferentes está ocupada mas ambígua. Reconcilie com a origem; ordenar não decide qual preço é correto.
Aceita qualquer exportação?
Não. São cinco campos com cabeçalho exato, preços com ponto decimal e timestamps completos com Z ou offset. Conserve a fonte e documente conversão de separadores, tipos e hora de abertura.
Grelha completa aprova um backtest?
Não. Falta confirmar ticks, spread, custos, execução, programa e cronologia. A ferramenta verifica uma estrutura de dados, não retorno futuro ou fiabilidade geral da corretora.
Fontes e verificação
- OANDA: velas
Bid/Ask/mid, abertura e complete como período terminado, não exportação completa.
- OANDA: alinhamento
dailyAlignment e alignmentTimezone com UTC na resposta; calendário não é grelha fixa universal.
- MetaQuotes: ticks
Substituição gerada quando há minuto sem ticks; M1 completo não prova ticks reais.
- MetaQuotes: preparação
Sincronização e possível deslocação do início por história insuficiente.
- MQL5:CopyRates
Elementos devolvidos e obtenção de história; confira pedido vs resposta.
Os cálculos usam pressupostos explícitos. Não substituem os dados atuais do mercado nem as condições do prestador.
