Slippage, spread e requote: por que o robô muda na conta real
Por Jackson Jordão · 22 de outubro de 2026 · 6 min

O robô que lucrou no backtest e perde na conta real quase sempre esbarra em três coisas: o spread, o slippage e o requote. O teste costuma ser otimista com os três. A conta real cobra cada um deles, e a diferença aparece em cada operação.
A boa notícia é que o robô pode ser programado para lidar com isso: medir o spread antes de entrar, definir o desvio máximo aceito (deviation) e tratar o retorno do servidor em vez de ignorá-lo. Neste artigo você vê o que cada termo significa e o que o código precisa fazer.
Spread, slippage e requote: o que é cada um
- Spread: a diferença entre o preço de compra (Ask) e o de venda (Bid). Toda operação já começa pagando esse custo. No MT5, a propriedade SYMBOL_SPREAD informa o valor atual em pontos.
- Slippage: a diferença entre o preço que o robô pediu e o preço em que a ordem foi executada. Pode ser contra ou a favor, e cresce em horários de notícia e de pouca liquidez.
- Requote: a corretora devolve um novo preço e pede que você confirme. Acontece em contas com execução do tipo Request ou Instant, e o servidor sinaliza com o código TRADE_RETCODE_REQUOTE.
Os três juntos formam o custo real de entrada. Uma estratégia que busca poucos pontos por operação, como um scalper, é a mais sensível: se o spread e o slippage consomem metade do alvo, o resultado muda por completo.
Por que o backtest engana
No Testador de Estratégias do MetaTrader 5, o modo "Todos os ticks baseados em ticks reais" é o mais fiel, porque usa o histórico de ticks da corretora. Ainda assim, o teste é uma reconstrução do passado: a ordem simulada é executada sem a fila, sem a variação de latência e sem o preço mudar entre o envio e a execução.
O testador também oferece a opção de simular atraso de execução (delays) e permite escolher o spread usado. Vale testar com atraso e com spread acima do normal, para ver se a estratégia sobrevive a um cenário pior. Se ela só funciona com spread mínimo e execução instantânea, o risco na conta real é alto.
Dica: Faça o seguinte teste: rode o mesmo período com o spread normal e com o dobro dele. Se o resultado desmorona, a margem da estratégia é pequena demais para o custo real. Veja o passo a passo no artigo sobre backtest, em /blog/como-fazer-backtest-metatrader-5.
Como o robô controla o slippage no MQL5
Ao enviar uma ordem a mercado, a estrutura MqlTradeRequest tem o campo deviation: o desvio máximo aceito em relação ao preço pedido, em pontos. Na biblioteca padrão, a classe CTrade tem o método SetDeviationInPoints para configurar o mesmo valor. Com ele, o robô diz até onde aceita ser executado.
Há um detalhe importante: segundo a documentação do MQL5, o uso do deviation depende do modo de execução do símbolo (SYMBOL_TRADE_EXEMODE). Nos modos Request e Instant, a corretora respeita o desvio. Nos modos Market e Exchange, a ordem é executada ao preço disponível e o campo não limita nada. É o caso de boa parte dos ativos da B3, que operam em bolsa.
Por isso, o robô não deve confiar só no deviation. Ele consulta SymbolInfoInteger com SYMBOL_TRADE_EXEMODE para saber o modo e, quando o preço executado for diferente do esperado, registra a diferença no log. Esse registro é a única forma de medir o slippage real da sua conta ao longo das semanas.
Filtro de spread: não entre quando o custo está alto
O filtro mais simples e mais útil é recusar a entrada quando o spread passa de um limite. O robô lê SYMBOL_SPREAD (ou calcula Ask menos Bid) e compara com um parâmetro de entrada, como o spread máximo em pontos. Se estiver acima, espera o próximo tick.
Em símbolos com spread flutuante (SYMBOL_SPREAD_FLOAT), o valor muda ao longo do dia e dispara na virada do dia, nos minutos de notícia e na abertura. É nesses momentos que o filtro mais evita prejuízo. O artigo sobre horário de operação, em /blog/horario-operacao-robo-metatrader-5, mostra como combinar o filtro de spread com janelas de entrada.
Requote e rejeição: tratar o retorno do servidor
Depois de OrderSend ou de um método do CTrade, o robô precisa olhar o código de retorno. Os mais comuns nesse tema são TRADE_RETCODE_REQUOTE, TRADE_RETCODE_PRICE_CHANGED (preço mudou), TRADE_RETCODE_PRICE_OFF (sem cotação) e TRADE_RETCODE_REJECT (pedido rejeitado). Cada um pede uma resposta diferente.
- Requote ou preço alterado: reler o preço atual com SymbolInfoTick e decidir se a entrada ainda faz sentido. Se o preço andou demais, desista da operação em vez de forçar.
- Sem cotação: aguardar o próximo tick. Insistir em loop apertado só gera mais rejeições.
- Rejeição: registrar o código e a mensagem no log. Se o motivo for o tipo de preenchimento, o artigo em /blog/tipos-preenchimento-ordem-fok-ioc-return-mt5 explica como ajustar.
- Limite de tentativas: repetir poucas vezes, com intervalo curto, e então abandonar o sinal. Um robô que tenta sem parar pode abrir a posição tarde demais e no pior preço.
Dica: Nunca ignore o retorno da ordem. Um robô que não verifica o resultado acha que está posicionado quando a ordem foi recusada, e todo o controle de risco que vem depois fica errado.
Da conta demo para a conta real
A conta demo ajuda a validar a lógica, mas costuma ter execução mais limpa do que a real. Por isso, o caminho mais seguro é gradual: primeiro a demo, depois a conta real com o menor lote possível, comparando preço pedido e preço executado em cada operação. Só aumente o lote depois de conhecer o custo real da sua corretora.
Lembre também que qualquer operação com dinheiro real envolve risco de perda, e que um bom teste não garante o resultado futuro. O objetivo é conhecer os custos e evitar surpresas, não eliminar o risco.
Resumo
- O backtest não cobra por completo spread, slippage e requote; teste também com spread maior e com atraso.
- Use o deviation (MqlTradeRequest ou SetDeviationInPoints do CTrade) para limitar o slippage, lembrando que ele depende do modo de execução do símbolo.
- Crie um filtro de spread máximo para o robô não entrar quando o custo está alto.
- Trate sempre o código de retorno da ordem: requote, preço alterado, sem cotação e rejeição.
- Passe para a conta real aos poucos, com lote mínimo, e registre a diferença entre o preço pedido e o executado.
Quer um robô que lida com esses custos?
A Digital Master12 programa robôs para MetaTrader 5 com filtro de spread, desvio máximo configurável, tratamento dos códigos de retorno e registro de slippage em log. Para o seu robô, o caminho é simples:
- Descreva a sua estratégia pelo Termo de Referência do site ou pelo WhatsApp.
- Receba a análise do que precisa ser programado, incluindo os cuidados com execução.
- Receba o robô testado em conta demo, com o código-fonte.