Fechamento parcial e trailing: onde quebra e como checar
Sumário (5)
Sumário
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:
- Gestão do volume restante: o EA não consegue "lembrar" se já fez o fechamento parcial
- Passo de lote: o volume a fechar não respeita o lote mínimo nem o passo da corretora
- 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 verificar | Sintoma quando quebra | Como verificar |
|---|---|---|
| A etapa do fechamento parcial é decidida pelo histórico de execuções? | Fechamento parcial em duplicidade após reiniciar | Com 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 erro | Abra 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 tick | Teste 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 entrada | Acompanhe 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 funciona | Veja 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 desalinhados | Envie 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 EAs | Confirme 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.
Relacionados
2026-10-29
OnTick e OnTimer no MQL5 | Como usar cada um no EA
2026-11-01
Por que EAs que usam só candles fechados não repintam
2026-07-26
O que o tempo médio de posição revela de um EA
2026-07-15
[55] Por que uma EA com 90% de acerto é sinal de alerta
📧 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 ↗