Otimização no MT5 sem overfitting: teste fora da amostra e walk-forward
Por Jackson Jordão · 18 de outubro de 2026 · 6 min

Overfitting é quando você ajusta os parâmetros do robô tanto ao passado que ele só funciona naquele trecho de histórico. O resultado do backtest fica lindo, mas o robô não se repete em dados novos. Para evitar isso no MetaTrader 5, separe o histórico em duas partes: otimize em uma e confirme na outra, que o robô nunca viu. É o teste fora da amostra, e o próprio Testador de Estratégia tem um recurso para isso: o período avançado (forward).
O walk-forward leva a mesma ideia mais longe: repete esse processo em janelas sucessivas de tempo. Neste artigo você vê como fazer cada etapa no MT5 e quais sinais mostram que uma otimização está enganando você.
O que é overfitting, na prática
Um robô tem parâmetros: período da média, distância do stop, horário de entrada. Quando você testa milhares de combinações, alguma delas sempre vai ter um resultado excelente no histórico, só por acaso. Escolher justamente essa combinação é escolher a sorte do passado.
Sinais comuns de overfitting:
- Resultado muito bom com valores "quebrados" de parâmetro, como uma média de 37 períodos que só funciona com 37, e não com 36 ou 38.
- Poucas operações no período testado, de modo que um punhado de trades decide o resultado.
- Curva de saldo ótima na otimização e plana ou em queda quando você roda em outro período.
- Muitos parâmetros ajustados ao mesmo tempo, cada um "encaixando" um pedaço do histórico.
Dica: Quanto mais parâmetros e mais combinações, maior a chance de um resultado bonito ser só coincidência. Otimize poucos parâmetros por vez, aqueles que realmente fazem sentido para a estratégia.
Passo 1: separe dentro da amostra e fora da amostra
A parte do histórico em que você otimiza é a amostra de otimização (dentro da amostra). A parte reservada para conferir é a fora da amostra. Regra de ouro: você não pode mexer nos parâmetros depois de olhar a parte reservada. Se mexer, ela deixa de ser independente.
No MT5, na aba Configurações do Testador de Estratégia, o campo de período avançado ("Forward") faz essa divisão automaticamente. Segundo a ajuda do MetaTrader 5, as opções são "não", "1/2", "1/3", "1/4" e "personalizado": as três frações usam metade, um terço ou um quarto do período indicado para o teste avançado, e em "personalizado" você informa a data em que ele começa.
Na otimização, o terminal usa o primeiro trecho para buscar os parâmetros e roda o trecho final com cada combinação, mostrando os resultados em colunas separadas. Assim você enxerga, lado a lado, quanto cada combinação rendeu no que foi otimizado e no que não foi.
Passo 2: escolha o tipo de otimização e o critério
O MT5 oferece três tipos de otimização, segundo a documentação do terminal:
- Lenta (busca completa): testa todas as combinações. É a mais precisa, mas demora com muitos parâmetros.
- Rápida (algoritmo genético): seleciona as combinações mais aptas ao longo de gerações. É bem mais rápida e indicada quando há muitas combinações.
- Todos os símbolos selecionados na Observação do mercado: mantém os parâmetros e troca só o símbolo, útil para ver se a lógica funciona em mais de um ativo.
No algoritmo genético você também escolhe o critério de otimização. Entre as opções estão saldo máximo, rentabilidade máxima, retorno esperado máximo, rebaixamento mínimo, fator de recuperação máximo, coeficiente de Sharpe máximo, o critério complexo e o critério do usuário. Otimizar só por saldo máximo costuma premiar combinações arriscadas. Um critério que considere também o rebaixamento ou o fator de recuperação tende a dar resultados mais sólidos.
Se nenhum critério pronto serve, o programador pode criar o seu: a função OnTester() devolve um valor double ao final de cada passagem, e ele é usado quando você escolhe o critério do usuário ("Custom max"). Um exemplo é devolver 0 quando houve poucas operações, o que descarta combinações sem amostra suficiente. Veja também o artigo sobre backtest, em /blog/como-fazer-backtest-metatrader-5.
Passo 3: olhe o resultado do jeito certo
Terminada a otimização, não pegue a primeira linha da tabela. Compare as colunas de resultado dentro e fora da amostra e procure por:
- Combinações que são boas nos dois trechos, e não só no otimizado.
- Uma região estável: parâmetros vizinhos com resultados parecidos. Um pico isolado cercado de resultados ruins é sinal de sorte.
- Número razoável de operações no teste avançado, para que o resultado tenha significado.
- Rebaixamento compatível com o que você aceitaria na conta real.
Dica: Prefira o conjunto de parâmetros no meio de uma região estável, e não o campeão absoluto da tabela. Um resultado um pouco pior, porém robusto, costuma se comportar melhor em dados novos.
Walk-forward: repetir o processo ao longo do tempo
O período avançado faz uma única divisão. O walk-forward faz várias, em sequência. Exemplo: otimize de janeiro a dezembro e teste em janeiro a março do ano seguinte. Depois avance a janela, otimize de abril a março e teste nos três meses seguintes, e assim por diante. Junte todos os trechos fora da amostra e veja se, no conjunto, o robô se sustenta.
A vantagem é testar também o processo de reotimizar: você verifica se, ao reajustar os parâmetros periodicamente, o robô acompanha o mercado. O MT5 não traz um botão pronto de walk-forward completo, então o trabalho costuma ser feito rodando as janelas uma a uma, ou com um programa auxiliar que automatize essas rodadas. Isso é algo que um programador MQL5 pode montar para você.
Cuidados que valem para qualquer otimização
- Use ticks reais e spread realista no teste, para que o resultado se aproxime da operação de verdade.
- Inclua custos de operação (corretagem, emolumentos, slippage), que mudam bastante o resultado de robôs de muitas operações.
- Use períodos longos e diferentes regimes de mercado: alta, queda e lateralização.
- Depois do teste fora da amostra, rode em conta demo antes de arriscar dinheiro real.
- Nenhum teste garante resultado futuro. Ele só reduz a chance de você se enganar com o passado.
Resumo
- Overfitting é ajustar o robô ao passado; o backtest bonito não prova que ele funcionará adiante.
- Separe o histórico: otimize em uma parte e confirme em outra, sem mexer nos parâmetros depois.
- No MT5, o campo período avançado (Forward) faz essa divisão com 1/2, 1/3, 1/4 ou uma data personalizada.
- Escolha o critério com cuidado e prefira regiões estáveis de parâmetros, não o pico isolado.
- O walk-forward repete a validação em janelas sucessivas e testa o processo de reotimização.
Quer validar seu robô do jeito certo?
Se você tem um robô e quer saber se ele resiste a dados novos, ou ainda vai criar um e quer a otimização bem feita desde o começo, a Digital Master12 programa o Expert Advisor e organiza os testes. Para isso, é só seguir estes passos:
- Descreva sua estratégia pelo Termo de Referência do site ou pelo WhatsApp.
- Receba a análise das regras, dos parâmetros e da melhor forma de testá-los.
- Receba o robô testado em conta demo, com o código-fonte.
Antes disso, veja também /blog/como-transformar-estrategia-em-robo-metatrader-5 e /blog/martingale-grid-robo-metatrader-5, que mostra por que certos resultados de teste enganam.