Início > Blog > Fechamento parcial e trailing: onde quebra e como checar

MQL5Desenvolvimento de EA

Fechamento parcial e trailing: onde quebra e como checar

Publicado: 2026-11-11Leitura: cerca de 3 min
⏱ Este artigo reflete as informações na data de publicação. Os números de desempenho dos EAs (PF, DD, retorno anual) mudam com a operação real e com a revalidação — confira os mais recentes nas páginas dos EAs. Ver os resultados mais recentes dos EAs →
Sumário (5)
  1. Conclusão: o que quebra não é a lógica, e sim a "passagem de estado"
  2. Por que a combinação quebra
  3. O volume restante não pode depender da "memória" do EA
  4. O lote deve ser "truncado", não "arredondado"
  5. Escreva o SL em um único lugar, no final
  6. Checklist de implementação e verificação
  7. Limites e cuidados
  8. Resumo

Conclusão: o que quebra não é a lógica, e sim a "passagem de estado"

Fechamento parcial e trailing stop não são operações difíceis quando usados isoladamente. Os problemas aparecem quando os dois atuam sobre a mesma posição. Na nossa experiência de desenvolvimento, os erros se concentraram quase sempre em três pontos:

  1. Gestão do volume restante: o EA não consegue "lembrar" se já fez o fechamento parcial
  2. Passo de lote: o volume a fechar não respeita o lote mínimo nem o passo da corretora
  3. Ordem de reajuste do SL: fechamento parcial, movimento para o preço de entrada e trailing se sobrescrevem mutuamente

São falhas que dificilmente aparecem no backtest e, na maioria das vezes, só são notadas na operação real.

Comparação de corretoras recomendadas →

🎁 Baixar EA grátis

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Por que a combinação quebra

O volume restante não pode depender da "memória" do EA

No MT5, mesmo após um fechamento parcial o ticket da posição continua o mesmo, e apenas POSITION_VOLUME diminui. Se o "já fechou parcialmente" estiver guardado apenas em uma variável bool, o valor se perde quando o EA é reiniciado, quando o VPS reconecta ou quando o timeframe é trocado. No primeiro tick seguinte, o EA fecha pela metade a posição que sobrou, e esse é o acidente típico.

Como solução, usamos HistorySelectByPosition() para percorrer o histórico de execuções da posição e comparar o volume inicial com o volume atual para decidir em que etapa do fechamento parcial estamos. A flag em memória fica apenas como apoio.

O lote deve ser "truncado", não "arredondado"

Metade de 0,03 lote é 0,015. Em uma conta com passo de 0,01, arredondar para o inteiro mais próximo fecharia 0,02, ou seja, mais do que o planejado. O volume a fechar deve ser truncado conforme SYMBOL_VOLUME_STEP, e é preciso verificar também se o volume restante após o fechamento será igual ou maior que SYMBOL_VOLUME_MIN. Uma posição de 0,01 lote simplesmente não pode ser dividida; se você não definir na especificação se o EA "não faz fechamento parcial" ou "fecha tudo", ele continuará retornando erro.

Escreva o SL em um único lugar, no final

PositionModify() é uma função que define SL e TP ao mesmo tempo. Se o trailing passar 0 como TP, o TP é apagado. Além disso, se após o fechamento parcial a rotina que move o SL para o preço de entrada e a rotina de trailing que sobe o SL rodarem separadamente no mesmo tick, vale a que escrever por último. O resultado é que um SL já levado ao preço de entrada pode voltar para baixo.

A ordem que adotamos é esta:

  • Enviar o fechamento parcial → selecionar a posição novamente e confirmar o volume restante
  • Calcular os dois candidatos: SL no preço de entrada e SL de trailing
  • Mover somente para o lado "mais favorável que o SL atual" (o mais alto em compras, o mais baixo em vendas)
  • Verificar o nível de stop e o nível de congelamento (freeze level) e, só então, fazer uma única modificação, repassando o TP atual

Checklist de implementação e verificação

Item a verificarSintoma quando quebraComo verificar
A etapa do fechamento parcial é decidida pelo histórico de execuções?Fechamento parcial em duplicidade após reiniciarCom o EA em operação, recoloque-o no gráfico e observe a variação do volume restante
O volume a fechar é truncado pelo passo de lote?Fecha mais do que o previsto, ou aparece erroAbra uma posição com o lote mínimo e consulte o log
Definiu o que fazer com divisão no lote mínimo?Falha ao fechar a cada tickTeste com 0,01 lote
O SL nunca volta para uma direção desfavorável?Encerramento no prejuízo depois do SL no preço de entradaAcompanhe a evolução do SL no log, em ordem cronológica
A alteração do SL apaga o TP?A realização de lucro não funcionaVeja o campo TP da posição após a modificação
O SL deixa de ser movido quando o fechamento parcial falha?Volume restante e premissa do SL ficam desalinhadosEnvie a ordem perto do fechamento do mercado para forçar a falha
O EA está rodando em conta netting?A posição se soma à de outros EAsConfirme o tipo de conta

Se você é o usuário do EA, a verificação mais rápida é rodá-lo em conta demo com o lote mínimo e recolocar o EA no gráfico no meio da operação para ver se o comportamento muda. O básico da configuração está em Como configurar o EA.

Limites e cuidados

No Strategy Tester a execução é instantânea e praticamente nunca ocorre execução parcial de uma ordem. Por isso, as falhas ligadas ao fechamento parcial quase não aparecem nos números do backtest. Diferenças no modo de execução (filling mode) em conta real e o comportamento em caso de requote só podem ser conferidos corretora por corretora, e essa é a verdade.

Incluir fechamento parcial também não garante resultados melhores. Em estratégias seguidoras de tendência, com baixa taxa de acerto e sustentadas por poucos lucros grandes (por exemplo, o DONCHIAN ENGINE tem taxa de acerto de 34,5% no backtest), reduzir o volume justamente nos momentos em que o lucro se estende pode diminuir a expectativa matemática. A oscilação dos resultados fica menor, mas o que se perde em troca só pode ser descoberto testando cada EA. Nós mesmos não conseguimos verificar todas as combinações.

Se você for adicionar fechamento parcial por conta própria a uma estratégia como o DONCHIAN ENGINE, lembre-se de que os resultados de validação originais deixam de valer como estão.

Resumo

  • Na combinação de fechamento parcial com trailing, o que mais quebra é a "passagem de estado", mais do que a lógica
  • A etapa do fechamento parcial deve ser decidida pelo histórico de execuções e pelo volume restante, não por uma flag em memória
  • Trunque o lote pelo passo e confirme que o volume restante não fica abaixo do lote mínimo
  • Concentre as alterações de SL em um único lugar, mova apenas na direção favorável e não apague o TP
  • Como o backtest dificilmente mostra esses erros, faça o teste de recolocar o EA em conta demo
  • O fechamento parcial reduz a oscilação dos resultados, mas pode também reduzir a expectativa matemática

Outros cuidados de implementação estão reunidos em Conhecimento sobre EA e MT5.

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Tem alguma dúvida sobre EAs ou Forex?

Você pode publicá-la no fórum de trading da Nattzy (cadastro gratuito). Dúvidas além deste artigo também são bem-vindas — configuração de EAs, escolha de corretora e mais.

Perguntar na Nattzy ↗

Comentários e perguntas