Quando você programa um Expert Advisor (EA) em MQL5, a maioria das vezes pensa só em abrir posições. Na prática, o ponto de dor maior é fechar parte da operação no momento certo, sem precisar interromper todo o trade. Saídas parciais automáticas são a ponte entre a teoria de “take profit” fixo e a realidade de mercados voláteis, onde a lucratividade pode evaporar em segundos.
Por que a saída parcial costuma falhar?
- Timing impreciso: usar apenas
OrderCloseapós um gatilho simples (ex.: preço > X) ignora a dinâmica do spread e slippage. - Gestão de lotes: dividir o volume sem recalcular margem pode gerar margin call inesperado.
- Condições de mercado: notícias ou gaps podem impedir a execução da ordem parcial, deixando o EA “preso”.
Estrutura mínima de um script de saída parcial
| Passo | O que fazer |
|---|---|
| 1 | Detectar o nível de lucro desejado (ex.: 30% do objetivo total). |
| 2 | Calcular a quantidade de lotes a fechar: lotClose = NormalizeDouble(totalLot * 0.5, 2); |
| 3 | Verificar a disponibilidade de margem após o fechamento parcial. |
| 4 | Executar OrderClosePartial (função customizada) com PRICE_CURRENT e slippage controlado. |
| 5 | Atualizar variáveis internas (stop‑loss, take‑profit) para o lote remanescente. |
Implementação prática – exemplo funcional
O código abaixo ilustra um EA que fecha 50 % da posição ao atingir 20 pips de lucro, mantendo o restante com um trailing stop ajustado.
void CheckPartialExit() { for(int i=PositionsTotal()-1;i>=0;i--) { ulong ticket=PositionGetTicket(i); if(!PositionSelectByTicket(ticket)) continue; double profit=PositionGetDouble(POSITION_PROFIT); double lot =PositionGetDouble(POSITION_VOLUME); double price =SymbolInfoDouble(_Symbol,SYMBOL_BID); if(profit>=20*_Point && lot>0.01) { double lotClose=NormalizeDouble(lot/2,2); double sl=price-30*_Point; // trailing stop para o restante if(!OrderClosePartial(ticket,lotClose,price,5)) Print("Falha ao fechar parcial: ",GetLastError()); else PositionModify(ticket,sl,0); } } } Limitações e armadilhas
- Funções de fechamento parcial não são nativas; o código acima simula usando
OrderSendcomORDER_TYPE_SELLeORDER_CLOSE_BY. Em contas com alta latência, a ordem pode ser rejeitada. - Se o spread subir subitamente, o slippage definido (5 pips) pode ser insuficiente, provocando rejeição.
- Em mercados de alta volatilidade, o preço pode ultrapassar o nível de lucro antes que o EA calcule o lote, resultando em “over‑close”.
FAQ rápido
- Posso usar
PositionClosePartial? Não existe tal função; a prática corrente é abrir uma ordem de fechamento inversa usandoORDER_CLOSE_BY. - É seguro fechar 100 % em duas etapas? Só se a margem residual for suficiente; caso contrário, a conta pode ser liquidada.
- Como evitar gaps? Combine a saída parcial com um filtro de volatilidade (ex.:
iATR) e suspenda a lógica em eventos de notícias.
Aplicar saídas parciais requer mais do que copiar snippets; é preciso alinhar o script ao perfil de risco e à infraestrutura de execução da corretora. Teste exaustivamente em um ambiente de demonstração antes de migrar para conta real, e ajuste slippage e lotes conforme a liquidez do ativo.
Para quem quer aprofundar a configuração avançada, o guia completo de gestão de posições em MQL5 traz exemplos de trailing stops dinâmicos e integração com indicadores de volatilidade.
Primeiros passos após a compra
Instale o MetaEditor e abra o .mq5 que acompanha o pacote. Salve-o em Experts\MyPartialExit. Não altere a estrutura de pastas; o compilador depende desse caminho para localizar recursos auxiliares.
Compile o arquivo. Se houver erros, verifique duas coisas:
- Versão da linguagem – o código usa
#property strict, exigindo MQL5 ≥ 2300. - Permissões de escrita – a pasta
Filesdeve estar habilitada nas opções de Common do MetaTrader.
Configuração inicial do Expert Advisor
Abra o painel de Inputs e ajuste os parâmetros críticos:
| Parâmetro | Descrição | Valor padrão |
|---|---|---|
| PartialTakeProfit | Percentual de lucro para a primeira saída parcial (0‑100) | 30 |
| SecondTakeProfit | Percentual de lucro para a segunda saída parcial | 60 |
| TrailingStart | Ponto de partida do trailing (pips) | 15 |
| MaxTrades | Limite máximo de posições simultâneas | 5 |
Salve as alterações e anexe o EA ao gráfico do ativo desejado.
Rotina recomendada de operação
1. Entrada: o EA abre a posição quando o sinal de trend (ex.: EMA 50 × EMA 200) for confirmado.
2. Primeira saída parcial: ao atingir PartialTakeProfit, o script fecha 50 % da lotação e mantém o restante.
3. Trailing e segunda saída: o trailing inicia em TrailingStart. Quando o lucro chega a SecondTakeProfit, o restante da posição é fechado.
4. Reentrada automática: se MaxTrades não for atingido, o EA pode reabrir outra ordem imediatamente, aproveitando a mesma tendência.
Checklist operacional (visual)
- ✅ MetaEditor atualizado (≥ 2300)
- ✅ Parâmetros de TP ajustados ao seu perfil de risco
- ✅
AutoTradinghabilitado - ✅ Histórico de trades limpo (remova arquivos
.csvantigos) - ✅ Teste rápido em Strategy Tester – 10 minutos, timeframe 1H
Erros comuns e como evitá‑los
Erro 4108 – “Invalid price”: ocorre quando o preço de saída parcial fica fora do intervalo permitido. Solução: aumente o PartialTakeProfit ou reduza o spread do ativo.
Overtrading: se MaxTrades estiver alto, o EA pode abrir posições em mercados laterais, drenando capital. Ajuste para 2‑3 trades simultâneos em ativos voláteis.
Deslizamento excessivo: habilite ExecutionMode = ORDER_FILLING_FOK nas opções de Trade para garantir preenchimento total ou nenhum.
FAQ rápido
- Posso usar o EA em múltiplos pares? Sim, basta arrastar o mesmo arquivo para cada gráfico. Cada instância mantém seu próprio conjunto de variáveis.
- Como monitorar o desempenho? Abra o Journal e filtre por “PartialExit”. Os logs exibem o horário, preço e % de lotes fechados.
- É possível combinar com outros indicadores? O código aceita custom signals via função
OnSignal(). Basta inserir a lógica desejada e recompilar.
⚠️ Dica de ouro: execute o EA primeiro em conta demo por 48 h. Isso revela ajustes finos de
TrailingStartque variam entre pares.
Para download direto do script e acesso ao suporte oficial, clique aqui.
Perfil ideal e limitações práticas
Se você faz trading algoritmo‐driven em MQL5 e já lida com trailing stops, este módulo de saídas parciais automáticas pode ser um “boost” real. Não é para quem prefere operar manualmente ou usa estratégias de longo prazo sem necessidade de “lock‑in” de lucros.
Quem realmente vai tirar proveito
- Day traders que buscam capturar movimentos intradiários e proteger ganhos progressivamente.
- Programadores de Expert Advisors que já implementam gestão de risco e precisam de um “plug‑and‑play” para partial closes.
- Operadores de contas com alta frequência de operações, onde a margem de erro de timing é crítica.
Quem não encontrará utilidade
- Investidores buy‑and‑hold. O algoritmo de saída parcial acrescenta sobrecarga desnecessária.
- Traders que usam indicadores extremamente lagging (ex.: Ichimoku extenso) e não confiam em respostas rápidas.
- Quem não tem familiaridade com a API de negociação de MQL5; a curva de aprendizado pode exceder o retorno esperado.
Limitações contextuais
- Dependente de liquidez: em mercados estreitos a ordem parcial pode slippage e comprometer o plano.
- Não adapta a eventos de news de alta volatilidade; o algoritmo fecha posições parcialmente antes de o gatilho de news ser acionado.
- Requer ajustes de parâmetros (percentual de saída, intervalo de tempo) específicos para cada símbolo.
FAQ contextual
| Pergunta | Resposta |
|---|---|
| Posso usar em pares Forex sem ajuste? | Somente após calibrar o “step” de saída; pirâmides de spreads podem tornar a saída prematura. |
| Funciona em contas ECN? | Sim, mas o custo de spread pode reduzir a eficácia de saídas menores. |
| O módulo aceita múltiplas moedas simultâneas? | Ele permite, porém a gestão de memória cresce proporcionalmente ao número de símbolos ativos. |
Checklist final antes da implementação
- Teste em conta demo por, no mínimo, 500 trades simulados.
- Configure limites de slippage (<10 pips) para cada ativo.
- Defina percentuais de saída que preservem margem de lucro (15‑30%).
- Monitore logs de execução nas primeiras 24h de operação real.
Parecer editorial equilibrado
O recurso entrega o que promete: automatiza saídas parciais, reduz o “stress” de decisões manuais e potencializa a consistência de resultados. No entanto, ele não é uma solução mágica; a eficácia ainda depende de parâmetros bem afinados e de um ambiente de mercado líquido.
Se seu estilo combina com decisões rápidas, possui familiaridade com MQL5 e aceita um período de ajuste, a ferramenta tem boa chance de agregar valor. Caso contrário, o risco de over‑engineered supera os benefícios.
Próximos passos? Instale a versão de teste, conecte o script ao seu EA e rode o back‑test com dados históricos de alta frequência. Avalie a taxa de execução parcial e ajuste os limites de risco antes de migrar para produção.


