Backtesting no Forex: como testar sem usar informações futuras
O backtesting no forex aplica regras de negociação explícitas a preços históricos e registra as operações que essas regras teriam produzido sob determinadas hipóteses de execução. Um teste útil deixa claros a sequência dos eventos, os dados e os custos. Ele não comprova como uma corretora teria executado as ordens nem quanto a estratégia ganhará no futuro.
Autor · Editor
- Autor
- Mykola Zavarov
- Editor
- Andrey Bondarenko
Revisado

O essencial
Um sinal só pode usar uma barra completa depois que ela fecha. A execução deve ocorrer em um evento posterior permitido pelo teste.
Spread, slippage e comissão precisam seguir uma base de cálculo coerente. Custos já embutidos nos preços de execução não devem ser descontados novamente.
Uma amostra histórica reservada perde a independência quando seus resultados passam a influenciar novas decisões. A simulação fictícia abaixo é um exemplo didático, não uma validação.
O que é backtesting no forex?
Fazer um backtest é reconstruir uma sequência: partir de uma regra fixa, avançar pelas observações disponíveis e registrar decisões, execuções simuladas e resultados. Em uma estratégia forex, isso exige definir o par de moedas, os dados de preço, o tamanho da posição, as entradas, as saídas e os custos de negociação. A pergunta é o que essas regras produziram dentro do modelo, e não se é possível encontrar operações atraentes depois de ver o gráfico completo.
Um teste manual pode seguir esse processo com a reprodução do gráfico e um registro de operações. Um teste automatizado entrega a mesma sequência a um programa. A automação facilita a repetição, mas não corrige uma regra que usa preços futuros sem deixar isso claro, nem uma hipótese de execução que os dados disponíveis não sustentam.
Imagine verificar apenas se o preço acabou atingindo um alvo. Isso não esclarece se o stop foi atingido antes, qual lado da cotação permitia negociar ou se o sinal já existia no momento da entrada. Um teste confiável registra essas decisões antes de interpretar o resultado final.
Separe três questões: o que a regra observou, o que o modelo considerou executável e o que ficou registrado nas operações.
Defina as regras antes de olhar o resultado
Escreva uma especificação curta que outra pessoa consiga seguir sem perguntar quais operações você preferiu. “Comprar quando o impulso melhora” não basta. Defina quais preços medem esse impulso, quando ficam disponíveis e o que acontece se as condições entrarem em conflito. Identifique a versão e a data para que uma regra alterada não substitua silenciosamente a versão testada.
- Instrumento e observações: símbolo, período gráfico, horários de negociação, fuso horário e tratamento permitido para dados ausentes.
- Entrada e saída: condições exatas, momento do sinal, evento em que a execução é permitida e estado da posição.
- Dimensionamento: quantidade fixa ou regra completamente definida, incluindo a possibilidade de aumentar posições existentes.
- Execução e custos: lado da cotação, spread, comissão, slippage e eventual financiamento de posições mantidas de um dia para o outro.
- Limites do teste: histórico inicial necessário ao indicador e tratamento das posições abertas e dos sinais na última observação.
A simulação usa uma regra propositalmente simples, apenas de compra. Após o fechamento de cada barra de cinco minutos, compare o fechamento com a média simples dos três últimos fechamentos, incluindo o da barra que acabou de fechar. Se não houver posição e o fechamento estiver acima da SMA3, programe uma compra para a abertura da próxima barra. Se houver uma posição comprada e o fechamento estiver abaixo da SMA3, programe a saída para a próxima abertura. A igualdade não muda nada. Um novo fechamento acima da média não acrescenta outra posição à que já está aberta.
A regra verifica se o fechamento está acima ou abaixo da média; ela não exige um cruzamento e não é uma recomendação de estratégia. A posição é sempre de 10.000 EUR. Uma pesquisa real pode usar outras regras, mas alterar várias delas depois de ver os resultados cria um novo experimento. O modelo de plano de trading ajuda a separar a especificação atual das revisões propostas.
Escolha dados que sustentem o modelo de execução
Comece pela pergunta que os dados conseguem responder. Uma barra OHLC registra abertura, máxima, mínima e fechamento; esses quatro valores não mostram todos os preços intermediários nem a ordem em que ocorreram a máxima e a mínima. Se o stop e o alvo estiverem dentro da mesma barra, somente ela geralmente não permite determinar qual foi atingido primeiro. Aqui, o preço médio (midpoint) é (Bid + Ask) / 2 em um dado instante. A SMA3 é a média dos preços médios de fechamento de três barras consecutivas.
Dado ou configuração | O que verificar antes do teste |
|---|---|
Bid, Ask, ponto médio ou Last | Identifique a base dos preços registrados. O ponto médio não é, por si só, uma cotação de compra ou de venda. |
Barras ou ticks | Use uma resolução compatível com a lógica das ordens. Não invente uma trajetória precisa dentro da barra a partir de quatro preços. |
Horários e sessões | Registre o fuso horário, os limites das barras, os gaps de fim de semana e os intervalos ausentes. |
Especificação do símbolo | Confira o incremento de preço, o tamanho do contrato, a moeda do resultado e o significado do spread informado. |
Role para os lados para comparar todas as colunas ↔
A documentação do MetaTrader 5 sobre ticks explica por que os preços do gráfico precisam ser distinguidos dos preços de execução: compras e vendas usam lados diferentes da cotação, mas os gráficos disponíveis não necessariamente exibem ambos. Para uma regra sensível ao preço, isso pode mudar tanto a elegibilidade de uma ordem quanto seu resultado.
A expressão “ticks reais” também exige conferir os dados. A documentação de testes do MQL5 descreve situações em que o testador gera ticks porque os registros reais estão ausentes ou inconsistentes. Registre o modo escolhido e investigue os avisos sobre cobertura; o nome do modo não descreve, sozinho, cada observação utilizada.
A simulação contém 36 barras fictícias de pontos médios do EURUSD, espaçadas em cinco minutos, dentro de uma única sessão intradiária inventada. Elas não foram baixadas de um histórico de mercado. Não há ordens stop, limitadas ou de alvo cuja sequência precise ser resolvida dentro de uma barra. O exemplo ensina a ordem dos eventos e o cálculo dos custos; não demonstra se uma regra de SMA funciona no EURUSD.
Acompanhe o sinal até o próximo evento de execução
Acompanhe um backtest, decisão por decisão
Veja uma regra fixa percorrer 36 candles fictícios de cinco minutos de EUR/USD com preços no ponto médio entre Bid e Ask. Altere os custos presumidos e confira o sinal, a próxima abertura e o registro do resultado.
Dados apenas didáticos. Os candles são inventados: não são um histórico de mercado nem comprovam que a regra funciona.
A regra não muda
Após o fechamento do candle, compare seu preço de fechamento no ponto médio com a média desse fechamento e dos dois anteriores. Acima da SMA3: abra uma posição comprada se não houver posição. Abaixo: encerre a posição comprada. A igualdade mantém o estado. Cada posição tem 10.000 EUR; os resultados são em USD.
Uma decisão só pode ser executada na próxima abertura dentro da janela escolhida. Sinais de compra repetidos não aumentam o volume. Não há posições vendidas, stops, ordens limitadas, financiamento overnight ou otimização de parâmetros.
Candle 36 da janela escolhida (1–36) · 11:55
Confira a conciliação do resultado
- Operações encerradas · P/L líquido
- -3,70 USD
- Posição aberta · P/L marcado após a comissão de entrada
- 16,25 USD
- P/L total do modelo
- 12,55 USD
Líquido encerrado -3,70 USD + líquido marcado aberto 16,25 USD = total 12,55 USD.
Posições encerradas: 4. Execuções até esta etapa: 9.
A posição comprada aberta é avaliada pelo último fechamento no ponto médio menos metade do spread. A comissão de entrada já paga é descontada uma única vez. Essa avaliação não inclui futura comissão ou slippage de saída.
Sinal de venda no candle 36: ainda pendente. A posição continua aberta e nenhuma comissão de saída foi cobrada. Não há outra abertura dentro da janela; por isso, o último sinal não é executado aqui.
Onde os custos aparecem
- P/L encerrado pelos preços de execução
- -0,90 USD
- Comissões das posições encerradas
- 2,80 USD
- P/L aberto marcado antes da comissão de entrada
- 16,60 USD
- Comissão paga da entrada aberta
- 0,35 USD
- Todas as comissões pagas
- 3,15 USD
- Efeito do spread já incluído nas execuções
- 5,40 USD
- Slippage já incluído nas execuções
- 1,80 USD
- Metade adicional do spread na marcação aberta
- 0,60 USD
Spread e slippage já estão nos preços de execução; não desconte esses efeitos novamente. A comissão é uma cobrança separada. Marcar uma posição aberta não significa executar a saída.
As janelas inicial e posterior são exemplos temporais separados, não uma validação fora da amostra nem um teste forward com cotações futuras. A posição aberta inicial não é encerrada de forma oculta nem transferida para a janela posterior. Não some os P/L como se fossem um histórico contínuo da conta.
Apenas os candles já alcançados são mostrados. A linha contínua liga os fechamentos no ponto médio; a tracejada representa a SMA3. Triângulos para cima e para baixo marcam compras e vendas hipotéticas na abertura de cada candle. O eixo vertical indica USD por EUR.
USD por EUR
Candle de cinco minutos
- Fechamento no ponto médio
- SMA3
- Compra na abertura
- Venda na abertura
Sinal → próxima abertura → posição
Leia cada linha em ordem temporal: primeiro execute a decisão anterior na abertura e depois avalie o fechamento atual. Uma linha entre candles não cria preços ou execuções intermediários.
| Candle · horário do exemplo | Nesta abertura | Fechamento no ponto médio / SMA3 | Neste fechamento | Após o fechamento | P/L total do modelo |
|---|---|---|---|---|---|
| 109:00 | Sem execução | 1,10000— | Menos de três fechamentos: sem decisão | Sem posição | 0,00 USD |
| 209:05 | Sem execução | 1,10020— | Menos de três fechamentos: sem decisão | Sem posição | 0,00 USD |
| 309:10 | Sem execução | 1,100401,10020 | Acima da SMA3: comprar na próxima abertura | Sem posição | 0,00 USD |
| 409:15 | Compra a 1,10058; sinal do candle 3 | 1,100801,1004667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 1,25 USD |
| 509:20 | Sem execução | 1,101201,10080 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 5,25 USD |
| 609:25 | Sem execução | 1,101601,10120 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 9,25 USD |
| 709:30 | Sem execução | 1,101801,1015333 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 11,25 USD |
| 809:35 | Sem execução | 1,101601,1016667 | Abaixo da SMA3: vender na próxima abertura | Comprado em 10.000 EUR | 9,25 USD |
| 909:40 | Venda a 1,10142; sinal do candle 8 | 1,101301,1015667 | Abaixo da SMA3: continuar sem posição | Sem posição | 7,70 USD |
| 1009:45 | Sem execução | 1,101001,10130 | Abaixo da SMA3: continuar sem posição | Sem posição | 7,70 USD |
| 1109:50 | Sem execução | 1,100801,1010333 | Abaixo da SMA3: continuar sem posição | Sem posição | 7,70 USD |
| 1209:55 | Sem execução | 1,101001,1009333 | Acima da SMA3: comprar na próxima abertura | Sem posição | 7,70 USD |
| 1310:00 | Compra a 1,10118; sinal do candle 12 | 1,101201,10100 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 6,95 USD |
| 1410:05 | Sem execução | 1,101001,1010667 | Abaixo da SMA3: vender na próxima abertura | Comprado em 10.000 EUR | 4,95 USD |
| 1510:10 | Venda a 1,10072; sinal do candle 14 | 1,100701,1009667 | Abaixo da SMA3: continuar sem posição | Sem posição | 2,40 USD |
| 1610:15 | Sem execução | 1,100901,1008667 | Acima da SMA3: comprar na próxima abertura | Sem posição | 2,40 USD |
| 1710:20 | Compra a 1,10108; sinal do candle 16 | 1,101301,1009667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 3,65 USD |
| 1810:25 | Sem execução | 1,101601,1012667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 6,65 USD |
| 1910:30 | Sem execução | 1,101801,1015667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 8,65 USD |
| 2010:35 | Sem execução | 1,101401,10160 | Abaixo da SMA3: vender na próxima abertura | Comprado em 10.000 EUR | 4,65 USD |
| 2110:40 | Venda a 1,10122; sinal do candle 20 | 1,101001,10140 | Abaixo da SMA3: continuar sem posição | Sem posição | 3,10 USD |
| 2210:45 | Sem execução | 1,101201,10120 | Igual à SMA3: continuar sem posição | Sem posição | 3,10 USD |
| 2310:50 | Sem execução | 1,100801,10100 | Abaixo da SMA3: continuar sem posição | Sem posição | 3,10 USD |
| 2410:55 | Sem execução | 1,100401,10080 | Abaixo da SMA3: continuar sem posição | Sem posição | 3,10 USD |
| 2511:00 | Sem execução | 1,100601,10060 | Igual à SMA3: continuar sem posição | Sem posição | 3,10 USD |
| 2611:05 | Sem execução | 1,100901,1006333 | Acima da SMA3: comprar na próxima abertura | Sem posição | 3,10 USD |
| 2711:10 | Compra a 1,10103; sinal do candle 26 | 1,100601,10070 | Abaixo da SMA3: vender na próxima abertura | Comprado em 10.000 EUR | -2,15 USD |
| 2811:15 | Venda a 1,10042; sinal do candle 27 | 1,100301,10060 | Abaixo da SMA3: continuar sem posição | Sem posição | -3,70 USD |
| 2911:20 | Sem execução | 1,100601,10050 | Acima da SMA3: comprar na próxima abertura | Sem posição | -3,70 USD |
| 3011:25 | Compra a 1,10078; sinal do candle 29 | 1,101101,1006667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | -1,45 USD |
| 3111:30 | Sem execução | 1,101501,1010667 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 2,55 USD |
| 3211:35 | Sem execução | 1,101901,10150 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 6,55 USD |
| 3311:40 | Sem execução | 1,102301,10190 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 10,55 USD |
| 3411:45 | Sem execução | 1,102701,10230 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 14,55 USD |
| 3511:50 | Sem execução | 1,103101,10270 | Acima da SMA3: manter a compra sem nova ordem | Comprado em 10.000 EUR | 18,55 USD |
| 3611:55 | Sem execução | 1,102501,1027667 | Abaixo da SMA3: vender na próxima abertura | Comprado em 10.000 EUR | 12,55 USD |
As tabelas têm rolagem horizontal. Se necessário, selecione a região da tabela com Tab e use as setas.
Registro de posições
Uma linha encerrada inclui as duas comissões pagas. Uma linha aberta inclui apenas a comissão de entrada e a marcação pelo Bid, não uma saída inventada.
| Posição | Execução de entrada | Execução de saída / marcação | P/L pelo ponto médio, antes dos custos | P/L executado / marcado | Comissão paga | P/L líquido encerrado / marcado |
|---|---|---|---|---|---|---|
| 1Encerrada | Candle 4 · 1,10058 | Candle 9 · 1,10142 | 10,00 USD | 8,40 USD | 0,70 USD | 7,70 USD |
| 2Encerrada | Candle 13 · 1,10118 | Candle 15 · 1,10072 | -3,00 USD | -4,60 USD | 0,70 USD | -5,30 USD |
| 3Encerrada | Candle 17 · 1,10108 | Candle 21 · 1,10122 | 3,00 USD | 1,40 USD | 0,70 USD | 0,70 USD |
| 4Encerrada | Candle 27 · 1,10103 | Candle 28 · 1,10042 | -4,50 USD | -6,10 USD | 0,70 USD | -6,80 USD |
| 5Aberta · apenas marcação | Candle 30 · 1,10078 | Candle 36 · 1,10244 | 18,00 USD | 16,60 USD | 0,35 USD | 16,25 USD |
O CSV contém apenas a reprodução válida até o candle escolhido. Nomes de campo estáveis em inglês, ponto decimal e precisão integral permitem conferir as contas. O arredondamento ocorre na exibição, não no cálculo.
As tabelas têm rolagem horizontal. Se necessário, selecione a região da tabela com Tab e use as setas.
Examinar os dados OHLC fictícios
Todos os preços abaixo estão no ponto médio entre Bid e Ask. Máximas e mínimas permitem conferir os dados; a regra do fechamento à próxima abertura não as usa para inventar execuções. As linhas anteriores de inicialização estão identificadas e não geram operações.
| Candle · horário do exemplo | Abertura | Máxima | Mínima | Fechamento |
|---|---|---|---|---|
| 1 · 09:00 | 1,09980 | 1,10010 | 1,09970 | 1,10000 |
| 2 · 09:05 | 1,10000 | 1,10035 | 1,09980 | 1,10020 |
| 3 · 09:10 | 1,10020 | 1,10060 | 1,10005 | 1,10040 |
| 4 · 09:15 | 1,10050 | 1,10090 | 1,10040 | 1,10080 |
| 5 · 09:20 | 1,10080 | 1,10135 | 1,10060 | 1,10120 |
| 6 · 09:25 | 1,10120 | 1,10180 | 1,10105 | 1,10160 |
| 7 · 09:30 | 1,10160 | 1,10190 | 1,10150 | 1,10180 |
| 8 · 09:35 | 1,10180 | 1,10195 | 1,10140 | 1,10160 |
| 9 · 09:40 | 1,10150 | 1,10170 | 1,10115 | 1,10130 |
| 10 · 09:45 | 1,10130 | 1,10140 | 1,10090 | 1,10100 |
| 11 · 09:50 | 1,10100 | 1,10115 | 1,10060 | 1,10080 |
| 12 · 09:55 | 1,10080 | 1,10120 | 1,10065 | 1,10100 |
| 13 · 10:00 | 1,10110 | 1,10130 | 1,10100 | 1,10120 |
| 14 · 10:05 | 1,10120 | 1,10135 | 1,10080 | 1,10100 |
| 15 · 10:10 | 1,10080 | 1,10100 | 1,10055 | 1,10070 |
| 16 · 10:15 | 1,10070 | 1,10100 | 1,10060 | 1,10090 |
| 17 · 10:20 | 1,10100 | 1,10145 | 1,10080 | 1,10130 |
| 18 · 10:25 | 1,10130 | 1,10180 | 1,10115 | 1,10160 |
| 19 · 10:30 | 1,10165 | 1,10190 | 1,10155 | 1,10180 |
| 20 · 10:35 | 1,10175 | 1,10190 | 1,10120 | 1,10140 |
| 21 · 10:40 | 1,10130 | 1,10150 | 1,10085 | 1,10100 |
| 22 · 10:45 | 1,10100 | 1,10130 | 1,10090 | 1,10120 |
| 23 · 10:50 | 1,10120 | 1,10135 | 1,10060 | 1,10080 |
| 24 · 10:55 | 1,10080 | 1,10100 | 1,10025 | 1,10040 |
| 25 · 11:00 | 1,10040 | 1,10070 | 1,10030 | 1,10060 |
| 26 · 11:05 | 1,10060 | 1,10105 | 1,10040 | 1,10090 |
| 27 · 11:10 | 1,10095 | 1,10115 | 1,10045 | 1,10060 |
| 28 · 11:15 | 1,10050 | 1,10060 | 1,10020 | 1,10030 |
| 29 · 11:20 | 1,10030 | 1,10075 | 1,10010 | 1,10060 |
| 30 · 11:25 | 1,10070 | 1,10130 | 1,10055 | 1,10110 |
| 31 · 11:30 | 1,10110 | 1,10160 | 1,10100 | 1,10150 |
| 32 · 11:35 | 1,10150 | 1,10205 | 1,10130 | 1,10190 |
| 33 · 11:40 | 1,10190 | 1,10250 | 1,10175 | 1,10230 |
| 34 · 11:45 | 1,10230 | 1,10280 | 1,10220 | 1,10270 |
| 35 · 11:50 | 1,10270 | 1,10325 | 1,10250 | 1,10310 |
| 36 · 11:55 | 1,10310 | 1,10330 | 1,10235 | 1,10250 |
As tabelas têm rolagem horizontal. Se necessário, selecione a região da tabela com Tab e use as setas.
Baixe um protocolo de pesquisa
Use o roteiro de texto editável para definir um experimento separado antes de olhar os resultados. Ele não valida um teste nem transforma esta sequência inventada em evidência de mercado.
Baixar protocolo · TXTLimites do modelo
Volume fixo, execuções completas, spread, slippage e comissão constantes; espera apenas até a próxima abertura. Não há cotações ao vivo, execuções parciais, alavancagem, liquidação por margem, depósitos, saques ou regras de uma corretora específica. É uma explicação de sequência e contabilização, não um emulador de corretora ou otimizador de estratégias.
Este componente calcula nesta aba sem enviar os valores informados nem salvá-los no armazenamento do navegador. Arquivos só são criados quando você escolhe baixá-los. Esta afirmação vale para o laboratório, não para outras partes do site.
Avance na simulação uma barra por vez. Na abertura de uma barra, uma instrução válida programada após o fechamento anterior é executada com base nessa abertura e nos custos escolhidos. Só depois o modelo observa o fechamento da barra atual e calcula um novo sinal. Nenhuma operação pode usar um fechamento que ainda não ocorreu.
Por exemplo, um sinal de compra formado depois do fechamento da barra 3 pode ser executado na abertura da barra 4. Ele não pode receber o preço de abertura da barra 3. Por isso, um gap entre essas barras importa. A documentação de estratégias do TradingView também distingue a criação de uma ordem do tick posterior em que o emulador da corretora pode executá-la com a configuração de tempo padrão.
Compare o período completo com a primeira ou a segunda metade. Cada janela selecionada começa sem posição aberta. Fechamentos anteriores podem fornecer o histórico inicial da média, mas não trazem uma posição, uma taxa anterior ou uma ordem pendente. São execuções didáticas separadas: seus resultados não devem ser somados e apresentados como uma conta contínua.
No fim da janela selecionada, um novo sinal fica sem execução se a próxima abertura estiver fora dessa janela. Uma posição existente continua visível e recebe uma avaliação separada; o modelo não inventa uma saída para que todas as operações pareçam concluídas. Alterar a janela pode, portanto, mudar tanto o número de operações quanto a posição que permanece aberta no final.
As duas metades não constituem uma validação fora da amostra. Ambas pertencem a um pequeno exemplo fictício, e reiniciar as posições modifica o experimento.
Inclua os custos uma única vez, usando a mesma base
Neste modelo baseado no ponto médio, a compra é executada no ponto médio da abertura mais metade do spread e o slippage desfavorável. A venda de encerramento usa o ponto médio da abertura menos metade do spread e o slippage desfavorável. A comissão é uma cobrança separada, em USD, para cada execução da posição fixa de 10.000 EUR. Neste exemplo de EURUSD, 1 pip equivale a 0,0001 USD por EUR.
Exemplo de entrada e saída | Cálculo |
|---|---|
Ponto médio na entrada / saída | 1,10000 / 1,10200 |
Hipóteses | Spread de 1,2 pips; slippage desfavorável de 0,2 pip por execução; comissão de US$ 0,35 por execução |
Preços de execução na entrada / saída | 1,10008 / 1,10192 |
Resultado de preço após spread e slippage | 10.000 × (1,10192 − 1,10008) = US$ 18,40 |
Resultado líquido da operação encerrada | US$ 18,40 − US$ 0,35 − US$ 0,35 = US$ 17,70 |
Role para os lados para comparar todas as colunas ↔
Apenas o movimento do ponto médio produziria US$ 20,00. Não desconte spread e slippage dos US$ 18,40 novamente: eles já estão embutidos nos preços de execução. Com o mesmo ponto médio na entrada e na saída, essas hipóteses produzem −US$ 2,30. Acrescentar um pip ao spread reduz o resultado dessa operação completa em US$ 1,00, porque cada lado recebe metade do spread adicional.
Se uma posição continuar aberta, a simulação a avalia pelo último Bid modelado e considera a comissão de entrada já paga. Ela não cobra uma futura comissão de saída nem slippage de saída antes do encerramento. O total exibido é um resultado modelado, não um cálculo completo do patrimônio da conta.
Custos constantes permitem isolar seu efeito; eles não prometem reproduzir cotações reais. Um teste real pode precisar de spreads variáveis, comissões diferentes e financiamento na passagem pelo rollover. Este exemplo intradiário exclui o swap de posições mantidas de um dia para o outro. Consulte o guia de slippage para distinguir o preço solicitado, a cotação disponível e a execução efetiva.
Separe desenvolvimento, amostra histórica reservada e novos dados
Defina quais observações históricas podem orientar o desenvolvimento antes de examinar o período de avaliação. Um período posterior pode colocar à prova uma regra escolhida anteriormente, desde que seus resultados permaneçam fora do processo de seleção. Consultar repetidamente a amostra reservada e ajustar a estratégia transforma esse período em material de desenvolvimento.
Etapa | Objetivo | O que ela não comprova |
|---|---|---|
Desenvolvimento | Construir a regra e examinar as hipóteses nos dados permitidos. | Que a versão escolhida funcionará em outros dados. |
Amostra histórica reservada | Aplicar uma versão fixada a observações posteriores, ainda não utilizadas. | Execuções reais da corretora ou rentabilidade futura. |
Observação com novos dados | Acompanhar preços que chegam depois da definição das regras. | Que execuções simuladas correspondem às execuções reais. |
Role para os lados para comparar todas as colunas ↔
A configuração Forward do MetaTrader 5 usa uma parte posterior do intervalo histórico selecionado. Apesar do nome, isso não equivale a esperar por dados futuros de mercado. Identifique claramente tanto o nome da configuração quanto o método de pesquisa nas suas anotações.
A cronologia também vale para a preparação dos indicadores. Observações anteriores podem fornecer o histórico necessário para calcular um indicador no início do período de avaliação. Elas não devem introduzir um fechamento futuro no cálculo nem criar silenciosamente uma posição quando o experimento foi definido para começar sem ela.
Se a amostra reservada revelar um problema, registre-o. Uma estratégia revisada pode merecer um novo experimento, mas a antiga amostra reservada já é conhecida. Trocar o nome de um arquivo ou escolher outra métrica não devolve ao teste o status de avaliação em dados ainda não examinados.
Investigue as falhas antes de interpretar os retornos
Um resultado favorável é motivo para conferir o registro de operações, não para encerrar a verificação. Escolha algumas entradas e saídas, incluindo uma situação difícil no limite do período, e reconstrua quais informações estavam disponíveis em cada decisão. A linha mais informativa pode ser um sinal não executado ou uma operação pouco atraente que uma análise discricionária deixaria passar.
- Uso de informações futuras, ou lookahead: a decisão usa um fechamento posterior, um padrão confirmado no futuro ou um valor indisponível naquele momento.
- Sobreajuste, ou overfitting: muitas configurações são testadas, mas somente a vencedora é preservada, sem registrar a busca.
- Viés de seleção: datas, instrumentos ou operações favoráveis são mantidos, enquanto observações inconvenientes desaparecem.
- Incompatibilidade de execução: dados em barras são usados para afirmar uma sequência de execuções intrabar que eles não contêm.
- Erros de contabilização: sinais repetidos acrescentam posições não previstas, custos são cobrados duas vezes ou uma operação aberta desaparece no limite do período.
Os exemplos de lookahead do TradingView mostram como o acesso a informações futuras pode gerar resultados históricos pouco plausíveis. Uma pergunta prática é se o mesmo sinal poderia ter sido registrado enquanto as observações chegavam uma a uma. Se dados posteriores alteram uma decisão anterior, investigue essa dependência antes de confiar no relatório de desempenho.
Varie as hipóteses de maneira planejada, não até o resultado parecer aceitável. Por exemplo, compare a mesma regra fixa com diferentes custos declarados. Se uma pequena mudança de custo inverter o resultado, registre essa sensibilidade. Ela informa algo sobre o experimento; não justifica ocultar o cenário mais exigente.
Registre um teste reproduzível
Baixe o protocolo do experimento na simulação depois de selecionar a janela e os custos. Guarde-o com o cenário exibido e o registro das operações. A indicação de dados fictícios é essencial: divulgar os números sem esse contexto transformaria um exercício didático em uma alegação enganosa de desempenho.
Na sua própria pesquisa, o protocolo deve permitir que você volte um mês depois e entenda o que foi realmente testado. Uma captura de tela do lucro final não basta quando os dados, o momento do sinal ou a base dos custos mudaram.
- Registre a versão da regra, a pergunta que pretende investigar e as alterações desde a execução anterior.
- Identifique o conjunto de dados, a base dos preços, o fuso horário, o intervalo, as omissões e as etapas de preparação.
- Anote o momento dos sinais, as hipóteses de execução, o dimensionamento, os custos e o tratamento da posição aberta ao final.
- Separe as datas de desenvolvimento das de avaliação e registre se os resultados da avaliação já influenciaram suas escolhas.
- Salve o número de operações, o registro das execuções, os detalhes das posições abertas e as verificações que falharam junto com o resumo.
O modelo de diário de trading ajuda a organizar observações individuais, enquanto o protocolo descreve o experimento que as produziu. Preserve uma execução decepcionante com o mesmo cuidado que uma atraente; caso contrário, seu próprio histórico de pesquisa se torna uma amostra selecionada.
Interprete as métricas no contexto
Comece pelas contagens: observações disponíveis, operações encerradas, execuções cobradas e posições ainda abertas. Uma porcentagem sem seu denominador pode fazer uma amostra pequena parecer mais convincente do que é. Um sinal pendente no fim do período não é uma operação concluída, e uma posição aberta não é um ganho ou uma perda já realizados.
Em seguida, concilie os resultados líquidos das operações encerradas com a avaliação das posições abertas e as taxas já pagas. Verifique onde ocorrem as perdas e quanto o resultado depende de poucas operações. A simulação não inclui depósito, modelo de margem nem saques; portanto, sua trajetória de resultado não deve ser interpretada como o saldo de uma conta em corretora.
Consulte o guia do fator de lucro, o simulador da curva de capital e o guia do índice de Calmar para entender as definições e limitações dessas medidas. Um índice favorável não corrige o uso de informações futuras nem uma execução irrealista. Poucas horas de observações fictícias também não justificam anualizar o retorno ou fazer afirmações sobre o drawdown de longo prazo.
Uma conclusão útil descreve as condições: qual regra foi testada, em quais dados, sob quais hipóteses e o que continua incerto. “Esta versão perdeu dinheiro quando os custos aumentaram” é um resultado de pesquisa mais claro do que uma promessa sem fundamento de que a próxima versão será lucrativa.
Perguntas frequentes
Posso fazer o backtest de uma estratégia forex manualmente?
Sim. Revele as observações em ordem cronológica, aplique regras escritas e registre todas as operações elegíveis e hipóteses. Evite percorrer um gráfico já completo selecionando apenas padrões reconhecíveis. O trabalho manual precisa das mesmas regras de custos e limites do período que um teste automatizado.
Devo usar MetaTrader 5 ou TradingView?
Escolha de acordo com a regra, os dados e o comportamento de execução que precisa examinar. Leia as configurações do testador ou do emulador da corretora e confira execuções individuais. Configurações padrão diferentes podem produzir resultados diferentes sem que qualquer uma das plataformas demonstre que uma estratégia é lucrativa.
Ticks reais são sempre necessários?
O detalhamento necessário depende da regra. Uma estratégia sensível a eventos dentro de uma barra precisa de evidências que as barras talvez não ofereçam. Dados de ticks podem acrescentar detalhes, mas ainda é necessário verificar a cobertura das cotações, os lados do preço e as hipóteses de execução. Mais linhas não eliminam as limitações do modelo.
Quantas operações tornam um backtest confiável?
Não existe um número universal que valide qualquer estratégia. A frequência, a dependência entre operações, as condições de mercado e a quantidade de variantes testadas afetam a interpretação. Informe a amostra e suas limitações. O pequeno exemplo fictício desta página é propositalmente inadequado para sustentar uma alegação estatística de desempenho.
Por que os resultados reais podem diferir do backtest?
Preços, horários, spread, liquidez disponível, taxas e tratamento das ordens podem diferir do modelo. O teste também não contém condições de mercado que não ocorreram em seus dados. Resultados históricos continuam sendo evidências condicionadas às hipóteses; a observação com novos dados e a execução real devem ser registradas separadamente.
Um backtest lucrativo comprova uma vantagem?
Não. Primeiro, descarte vazamento de informações e erros de contabilização; depois, avalie como a estratégia foi escolhida e testada. Um resultado pode ser internamente coerente e ainda depender de um período pequeno ou pouco representativo. O backtesting apoia uma investigação; não garante um resultado futuro.
Fontes e leituras adicionais
- MetaTrader 5 — Strategy TestingConsultado
- MetaTrader 5 — Real and Generated TicksConsultado
- MQL5 — Testing Trading StrategiesConsultado
- TradingView — StrategiesConsultado