Backtesting & verificação intermediate 12 min de leitura

Otimização de parâmetros no MT5: 116 combinações, 252 execuções e 0 ajustes adotados

Otimização de parâmetros no MT5: buscamos ajustes em oito modelos de estratégia próprios e não adotamos nenhum. O útil é como cada um falhou: o maior vencedor dentro da amostra foi o que mais afundou, um passou em uma única verificação fora da amostra e ainda assim desabou, e dois nunca superaram 1,0 nem no período em que foram calibrados. Aqui está a leitura que evita publicar a primeira linha.

Publicado · Revisado

A otimização de parâmetros no MetaTrader 5 é uma busca: você declara uma faixa para cada entrada, o Strategy Tester roda todas as combinações e devolve uma tabela ordenada pela métrica que você escolheu. O difícil não é rodar. O difícil é que a tabela sempre tem uma primeira linha, e a primeira linha quase sempre está errada.

O que você leva deste artigo é um procedimento que produz uma decisão em vez de um número: uma busca que você consegue defender, uma leitura da grade de passagens que sobrevive ao contato com um segundo período, e uma regra de parada.

Condições do teste
ID do experimentoEXP-PARAM-SEARCH-OUTCOMES-001
Experimento paiEXP-BUILDER-TEMPLATE-BASELINE-001
Fonteea-templates-manifest.jsbt.explored
População8 recorded searches of the 53 measured templates
Símbolo / tempo gráficoUSDJPYm, M5 and H1
ModeloM1 OHLC (Model=1), Exness MT5, measured 2026-06-18
Parâmetros variadosstop loss and take profit only
Última verificação2026-08-25

Preparação: a grade, a divisão e os dados

Três ajustes decidem se a busca vale a pena ser rodada. Erre neles e a grade de passagens vira um gerador de números aleatórios caríssimo.

CampoOndeO que definirPor quê
OptimisationAba SettingsSlow complete algorithm para uma grade pequenaO modo genético amostra o espaço; para 12–32 combinações você pode se dar ao luxo de ver tudo
Start / Step / StopAba Inputs, por entradaDois parâmetros, passos grossosCada entrada que você marca multiplica a grade. As nossas moveram duas
ForwardAba Settings1/2, 1/3 ou 1/4Divide o intervalo para que o testador pontue a metade final separadamente — esta é a verificação para a qual você está rodando a busca
Optimisation criterionAba SettingsDecida antes de olhar a gradeÉ a métrica pela qual o testador ordena as passagens, então é ela que decide qual linha é a primeira
ModellingAba SettingsUm modo grosseiro para varrer, e depois rode de novo o sobrevivente sobre ticks reaisModos de varredura servem para ordenar candidatos, nunca para um número publicado
PeriodAba SettingsLongo o bastante para conter mais de um regimeUma busca dentro de uma única tendência encontra o ajuste que a cavalgou

O critério merece uma decisão, e não um valor padrão. Ordenar por lucro líquido premia a passagem que mais arriscou, e ordenar por uma medida baseada em drawdown premia a que menos operou — o fator de recuperação existe porque essas duas respostas discordam. Nossas próprias buscas não foram julgadas pela ordenação do testador em momento algum: cada sobrevivente foi pontuado pelo fator de lucro em três janelas separadas, e a ordenação dentro de qualquer uma delas nunca decidiu nada.

A qualidade dos dados vem primeiro: uma busca sobre ticks ruins otimiza as lacunas. A versão curta é que uma qualidade de modelagem abaixo de 90% torna inutilizáveis as grades de passagens intradiárias, e que uma execução construída a partir de dados de tick interpolados não consegue resolver um stop que fica dentro de uma barra.

  1. Rode primeiro um único backtest, com os valores padrão, e guarde o relatório. Sem uma referência, a grade de passagens não tem nada para superar — como fazer um backtest cobre essa passagem de ponta a ponta.
  2. Na aba Settings, coloque Optimisation em uma passagem completa para uma grade pequena, e ponha Forward em 1/3 para que o testador reserve o último terço do intervalo.
  3. Na aba Inputs, marque apenas os parâmetros que você está de fato testando, e dê a cada um um Start, um Step e um Stop. Duas entradas com passos grossos ganham de quatro com passos finos.
  4. Pressione Start e deixe terminar. Leia a aba Optimisation Results como uma tabela, e o Optimisation Graph como uma forma — um pico isolado é um aviso, um platô é um achado.
  5. Pegue os sobreviventes — não o vencedor — e rode cada um de novo como um backtest único sobre um período anterior à janela de otimização. Este é o passo que produziu todos os veredictos negativos do nosso conjunto, e é o que as pessoas pulam.

Lendo os resultados: três períodos, não um

Aqui está o nosso registro inteiro, ordenado pelo melhor fator de lucro dentro da amostra que cada busca alcançou. IS é o período em que o ajuste foi calibrado, OOS é a amostra reservada, e “anterior” é uma janela mais antiga que a busca nunca viu.

ModeloGrade exploradaMelhor ISOOSAnteriorVeredicto
ichimoku12 combinações × 3 janelas1,370,890,80no_robust_edge
ma_crossover20 + 12 combinações, dois tempos gráficos1,230,89–0,940,78no_robust_edge
cci_level12 combinações × 3 janelas1,071,050,92no_robust_edge
adx_trend12 combinações × 3 janelas1,040,910,80no_robust_edge
breakout12 combinações × 3 janelas1,040,79–0,890,64–0,84no_robust_edge
macd_signal12 combinações × 3 janelas1,14–1,150,74–0,77no_robust_edge
rsi_reversal12 combinações × 3 janelas0,91no_robust_edge
bb_bounce12 combinações × 3 janelas0,91no_robust_edge

Leia a primeira coluna numérica de cima a baixo, e depois na horizontal. O maior resultado dentro da amostra do conjunto produziu o maior colapso: o 1,37 do ichimoku caiu para 0,89 e depois para 0,80. Essa ordem não é coincidência — o ajuste que melhor encaixa em uma janela é, por construção, o que mais absorveu o ruído daquela janela.

Agora olhe o ajuste que de fato chegou mais perto. Ele não está na tabela acima, porque nunca foi a primeira linha de coisa alguma: na mesma grade do ichimoku, SL50/TP150 marcou 1,18 dentro da amostra, 0,99 fora da amostra e 1,00 na janela anterior. Três períodos, todos mais ou menos no zero a zero. Foi registrado como o candidato mais próximo e ainda assim não foi adotado, porque ficar no ponto de equilíbrio ao longo de três janelas não é uma vantagem — é a ausência de uma, medida com cuidado.

Contra isso, as referências que essas buscas tentavam superar ficam entre 0,92 e 1,03. Nenhuma busca chegou a mover um valor padrão publicado.

Armadilhas a evitar

O modo de falha por baixo das cinco é o mesmo. O sobreajuste não é um erro que você comete no fim de uma busca — é o desfecho padrão de rodar uma, e a disciplina dos três períodos existe para torná-lo visível antes que você aja com base nele.

Melhore e itere: o que mudar, e quando parar

Mude uma coisa, rode de novo, compare contra a referência que você guardou. A ordem que menos desperdiça tempo:

  1. Alargue o período antes de alargar a grade. Mais regimes ganha de mais combinações. Uma busca que cobre uma única tendência vai encontrar o ajuste que a cavalgou, seja qual for a resolução.
  2. Depois engrosse os passos, em vez de refiná-los. Se um resultado só existe em SL47, ele não existe.
  3. E então, e só então, acrescente um parâmetro. As nossas nunca chegaram até aqui, porque dois parâmetros já reprovavam no critério dos três períodos.

Pare quando uma destas for verdadeira, e anote qual:

  • Um sobrevivente passa nos três períodos. Publique-o, e registre toda a grade que você buscou — não apenas a passagem que você guardou.
  • O melhor resultado dentro da amostra está abaixo de 1,0. Você tem uma resposta de verdade: duas das nossas oito buscas terminaram aqui, e terminar aqui depois de 36 avaliações sai barato.
  • Os sobreviventes vivem passando em uma janela e falhando em outra. A regra depende do regime. Buscar mais produz mais ajustes dependentes do regime.
  • Você começou a explicar por que a janela anterior “não conta”. Esse é o momento em que a busca deixou de ser um teste.

O registro honesto de uma busca é a faixa que você cobriu e o veredicto, juntos. Cada uma das nossas oito está guardada assim, e é por isso que este artigo pôde ser escrito a partir delas — um vencedor guardado sozinho não teria provado nada.

Próximos passos: forward test e então decida

A otimização é o segundo passo de quatro. A sequência é backtest → otimização → walk-forward → demo, e cada um remove uma forma diferente de estar errado.

  • Pratique o ciclo em algo que você controla: monte uma estratégia no Builder e busque você mesmo o stop e o alvo dela, porque uma grade que você declarou é muito mais fácil de ler com honestidade do que uma herdada.
  • A versão formal da verificação de três períodos é a análise walk-forward, que vai rolando a divisão para frente em vez de fixá-la em um único lugar.
  • Seja lá o que a busca devolver, o relatório em que ela devolve ainda precisa ser lido: a leitura de um relatório de backtest do MT5 cobre sobre qual população cada número principal é, de fato, uma afirmação.
  • Para ver como é um registro terminado quando os números sobreviveram, cada um dos EAs publicados traz a lista completa de operações fechadas e o manifesto de execução por trás dela.
  • Como testamos, pontuamos e registramos tudo isso está descrito na nossa metodologia de testes.

Perguntas frequentes

Quantos parâmetros devo otimizar de uma vez?
Menos do que o testador vai deixar. Toda busca do nosso registro moveu exatamente dois — o stop loss e o take profit — ao longo de 12 a 32 combinações, e nenhuma das oito produziu um ajuste que estivéssemos dispostos a publicar. Acrescentar um terceiro e um quarto parâmetro não resolve isso; multiplica a grade e torna muito mais fácil encontrar uma combinação que encaixe no ruído da sua janela de teste. Se dois parâmetros não conseguem produzir um resultado que sobreviva a três períodos, o problema é a regra, e não a resolução da busca.
Que fator de lucro devo procurar em uma passagem de otimização?
Olhe três números, não um. No nosso conjunto, o melhor fator de lucro dentro da amostra chegou a 1,37 no modelo ichimoku — e o mesmo ajuste marcou 0,89 fora da amostra e 0,80 na janela anterior. O ajuste que chegou mais perto de ser utilizável era bem menos impressionante dentro da amostra: 1,18, segurando 0,99 e 1,00 nos outros dois períodos. Ainda assim não foi adotado, porque ficar no ponto de equilíbrio em duas de três janelas não é uma vantagem. Um número alto dentro da amostra é o dado menos informativo da tela.
Um único teste fora da amostra basta para validar um ajuste otimizado?
Não, e temos um caso que mostra por quê. O modelo macd_signal produziu um ajuste que chegou a 1,14 e 1,15 fora da amostra — uma aprovação limpa em uma única amostra reservada — e depois marcou 0,74 e 0,77 na janela anterior ao período de teste. Um segundo desenho, cci_level, foi mais longe: 1,07 dentro da amostra, 1,05 fora da amostra e 0,92 na janela anterior. Dois períodos também não bastaram. Os dois teriam sido publicados sob a regra habitual da amostra reservada única.
O que significa a otimização não encontrar nenhum ajuste lucrativo?
Significa que você tem a sua resposta cedo e barato, que é o bom desfecho. Duas das nossas oito buscas — rsi_reversal e bb_bounce — nunca produziram um fator de lucro acima de 1,0 nem no período em que foram calibradas; o melhor resultado delas dentro da amostra foi 0,91. Uma regra que não dá para fazer funcionar sobre os dados em que foi afinada não será resgatada por uma grade mais ampla nem por uma execução mais longa. Registre a faixa que você buscou e o veredicto, e vá para a próxima ideia.

Termos relacionados

Referências do glossário