← Todos os artigos

Parciais no robô: como realizar parte da posição automaticamente

Por Jackson Jordão · 23 de outubro de 2026 · 6 min

Mesa com celular mostrando calculadora, caderno, teclado e relatórios com gráficos
Foto: Jakub Żerdzicki/Unsplash

Parcial é fechar só uma fração da posição quando o preço chega a um alvo intermediário, e deixar o restante aberto. O robô faz isso enviando uma ordem contrária com volume menor que o da posição, ou usando o método PositionClosePartial da classe CTrade, da biblioteca padrão do MQL5.

A ideia parece simples, mas tem armadilhas: o volume precisa respeitar o lote mínimo e o passo do ativo, o stop do restante costuma ser movido, e a conta pode ser netting ou hedging. Neste artigo você vê como cada ponto entra na regra do robô.

Por que usar parciais

Quem opera à mão costuma realizar uma parte no primeiro alvo para garantir algum resultado e manter o resto atrás de um movimento maior. O robô pode repetir exatamente essa disciplina, sem hesitação e sem esquecer de executar.

  • Reduz o risco da posição depois que ela anda a favor.
  • Combina bem com mover o stop para o ponto de entrada no restante da posição (breakeven).
  • Permite alvos em estágios, por exemplo metade no primeiro alvo e o resto num alvo maior ou no trailing stop.
  • Deixa o comportamento do robô documentado em regras claras, fáceis de testar no backtest.

Parcial não é garantia de lucro. Ela muda a forma da curva de resultados: costuma reduzir oscilações, mas também corta parte dos ganhos nas operações em que o preço seguiria muito além do primeiro alvo. Só o teste com a sua estratégia mostra se compensa.

O que o robô precisa definir

Antes de programar, escreva as regras. Um robô sério não decide isso na hora; os parâmetros ficam configuráveis nas entradas (inputs):

  • Gatilho da parcial: pontos de lucro, múltiplo do risco (por exemplo 1R) ou um nível de preço.
  • Percentual a realizar: 50%, 30% ou outro valor.
  • O que fazer com o stop do restante: manter, levar ao breakeven ou iniciar um trailing.
  • Quantas parciais: apenas uma ou várias em alvos sucessivos.
  • Parcial só uma vez por posição, para o robô não repetir o fechamento a cada tick.

Como fechar uma parte da posição no MT5

Para saber o tamanho atual, o robô lê a propriedade POSITION_VOLUME da posição selecionada. Depois calcula o volume da parcial e o ajusta aos limites do ativo. A documentação do MQL5 define esses limites em SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_MAX e SYMBOL_VOLUME_STEP.

O cálculo do volume vem em quatro passos: multiplicar o volume da posição pelo percentual, arredondar para baixo para um múltiplo de SYMBOL_VOLUME_STEP, conferir se o resultado é maior ou igual a SYMBOL_VOLUME_MIN e conferir se o volume que sobra na posição também é válido.

Com o volume pronto, há dois caminhos:

  • CTrade::PositionClosePartial(ticket, volume): método da biblioteca padrão que fecha parte de uma posição. Em contas hedging, indique o ticket da posição. Em contas netting, também existe a versão por símbolo.
  • OrderSend com TRADE_ACTION_DEAL: o robô monta a requisição (MqlTradeRequest) com tipo oposto ao da posição, o volume da parcial e, em contas hedging, o campo position com o ticket.

Dica: Sempre confira o retorno da operação (retcode) e use o tipo de preenchimento aceito pelo ativo. Se a corretora rejeitar a ordem, o robô deve tentar de novo ou registrar o erro, e não assumir que a parcial foi feita. Veja o artigo sobre tipos de preenchimento, em /blog/tipos-preenchimento-ordem-fok-ioc-return-mt5.

Netting ou hedging: muda a lógica

Na conta netting, comum na B3, existe uma única posição por ativo. Uma ordem contrária com volume menor reduz essa posição, e isso é a parcial. Já na conta hedging, comum no Forex, cada operação é uma posição com seu próprio ticket, e a parcial reduz o volume daquela posição específica.

Por isso o robô precisa identificar a posição correta. Num robô que roda vários setups na mesma conta, o ideal é separar cada operação por um número mágico (magic number). O artigo sobre vários robôs na mesma conta, em /blog/varios-robos-mesma-conta-metatrader-5, mostra os cuidados para evitar conflito.

Parcial e stop: o que fazer com o restante

Depois da parcial, o risco da posição muda e o stop também deveria mudar. O caso mais comum é levar o stop do restante para o preço de entrada. Assim, se o mercado voltar, a parte que sobrou sai sem perda, descontados spread e eventual slippage.

Outra opção é entregar o restante a um trailing stop. O funcionamento dos dois está no artigo sobre trailing e breakeven, em /blog/trailing-stop-breakeven-robo-metatrader-5. Em ambos os casos, o robô deve modificar o stop respeitando a distância mínima exigida pelo ativo (SYMBOL_TRADE_STOPS_LEVEL).

Dica: Uma armadilha clássica: o robô realiza a parcial, mas o stop e o alvo continuam calculados sobre o volume antigo, ou o painel de risco ainda mostra a exposição inicial. Atualize o risco com o volume atual da posição.

Cuidados com o lote mínimo

O erro mais frequente em parciais é o lote pequeno demais. Se a posição é de 0,02 lote e o passo é 0,01, uma parcial de 50% é possível. Se for 0,01 lote, não há como dividir: o robô precisa pular a parcial ou fechar tudo, conforme a regra definida.

Na B3, vale o mesmo raciocínio nos contratos futuros. Com 1 contrato de mini índice ou de mini dólar, não existe parcial. Para dividir a saída, a estratégia precisa operar ao menos 2 contratos, e isso pesa na gestão de risco. O artigo sobre gestão de risco, em /blog/gestao-de-risco-robo-forex-metatrader-5, explica como dimensionar o lote.

Como testar antes de usar em conta real

  1. Rode o backtest em ticks reais e confira no histórico de negociações se cada parcial saiu uma única vez, no volume esperado.
  2. Teste com lotes de tamanhos diferentes, inclusive o mínimo, para ver o que o robô faz quando não dá para dividir.
  3. Compare os resultados com e sem parcial, no mesmo período, para saber o efeito real da regra.
  4. Faça um período em conta demo, para ver o comportamento diante de rejeições e de reinício do terminal.

Falando em reinício: o robô deve ser capaz de lembrar se a parcial já foi feita. Se o MetaTrader fechar e abrir de novo, ele precisa deduzir isso lendo a posição (por exemplo, comparando o volume atual com o inicial, guardado em uma variável global do terminal) e não repetir a parcial.

Resumo

  • Parcial é fechar uma fração da posição no alvo intermediário e deixar o resto aberto.
  • No MQL5, use CTrade::PositionClosePartial ou uma ordem contrária com volume menor.
  • Ajuste o volume ao SYMBOL_VOLUME_STEP e ao SYMBOL_VOLUME_MIN; com lote mínimo não há parcial.
  • Conta netting e conta hedging tratam a posição de forma diferente; identifique a posição certa.
  • Depois da parcial, atualize o stop do restante e controle para que ela ocorra uma única vez.

Quer parciais no seu robô?

A Digital Master12 programa robôs para MetaTrader 4 e 5 com parciais, breakeven, trailing e alvos em estágios, tudo configurável nas entradas. Sem promessa de resultado: o foco é o robô executar exatamente a regra que você definiu.

  1. Descreva a estratégia pelo Termo de Referência do site ou direto pelo WhatsApp.
  2. Receba a análise da regra, com as dúvidas e os pontos de risco levantados.
  3. Receba o robô testado em conta demo, com o código-fonte.

Orçamento pelo WhatsApp: (84) 99652-3661

Leia também