Robô para prop firm: como programar limite de perda diária e drawdown
Por Jackson Jordão · 15 de outubro de 2026 · 6 min

Um robô que opera em mesa proprietária (prop firm) precisa vigiar duas regras o tempo todo: o limite de perda diária e o drawdown máximo. Se qualquer uma for violada, a conta costuma ser encerrada, mesmo que a estratégia seja boa. A solução é programar o robô para medir o patrimônio (equity) a cada tick e, antes de chegar ao limite, parar de abrir ordens e fechar as posições.
A regra de proteção não pode ficar na sua cabeça nem no seu olho no gráfico. Ela precisa estar no código, porque o limite pode ser tocado em segundos, durante um movimento forte, enquanto você não está olhando. Veja como as regras funcionam e como transformá-las em código no MetaTrader 5.
As duas regras que derrubam a conta
Os nomes e detalhes mudam de uma mesa para outra, mas quase todas usam estas duas camadas:
- Limite de perda diária: quanto a conta pode perder dentro de um dia. A referência varia: algumas mesas usam o saldo do fim do dia anterior, outras usam o patrimônio, contando também o resultado das posições abertas.
- Drawdown máximo: a queda total permitida. Pode ser estático, com piso fixo a partir do capital inicial, ou trailing (móvel), em que o piso sobe junto com o maior patrimônio já atingido.
- Variações: em alguns modelos o piso só é atualizado no fechamento do dia; em outros, o pico é acompanhado em tempo real, inclusive com lucro ainda aberto.
Essas diferenças são descritas em guias do setor, como o da propfirmmap, e as mesas podem mudar as regras a qualquer momento. Por isso, o primeiro passo é ler a página de regras da sua mesa e anotar três pontos: qual é a base do limite diário, se o resultado aberto conta e como o drawdown é calculado.
Dica: Não copie números de exemplo da internet. O robô deve receber o limite como parâmetro de entrada (input), para que você ajuste de acordo com o regulamento atual da sua mesa.
Saldo ou patrimônio: o que o robô deve medir
No MQL5, a função AccountInfoDouble lê as propriedades da conta. Duas delas importam aqui: ACCOUNT_BALANCE, que é o saldo, e ACCOUNT_EQUITY, que é o patrimônio, ou seja, o saldo mais o resultado flutuante das posições abertas.
Se a mesa conta o resultado aberto no limite, o robô precisa olhar ACCOUNT_EQUITY. Olhar só o saldo é um erro comum: a conta pode estar com uma posição no prejuízo bem maior que o limite, e o saldo continua intacto até o fechamento. Quando a regra é por saldo, a lógica muda, mas é prudente monitorar o patrimônio mesmo assim, por segurança.
Como programar o limite diário
A lógica tem poucos passos e cabe em qualquer robô:
- No início de cada dia (no horário que a mesa usa como virada), guarde o valor de referência: saldo ou patrimônio, conforme a regra.
- A cada tick, em OnTick, leia o patrimônio atual com AccountInfoDouble(ACCOUNT_EQUITY).
- Calcule a perda do dia: referência menos patrimônio atual.
- Defina um limite interno mais conservador que o da mesa, uma margem de segurança. Quando a perda do dia chegar nele, o robô entra em modo bloqueado.
- No modo bloqueado, o robô fecha as posições abertas, remove as ordens pendentes e não abre nada novo até o dia seguinte.
O horário de virada é um detalhe que costuma causar surpresa. Há mesas que reiniciam o dia à meia-noite no horário do servidor da corretora, outras em um fuso específico. O fuso e o horário do servidor precisam ser tratados no código, e não supostos. O artigo sobre horário de operação do robô, em /blog/horario-operacao-robo-metatrader-5, mostra como lidar com janelas e fuso.
Como programar o drawdown máximo
O drawdown máximo é mais traiçoeiro, porque o piso pode se mexer. O robô precisa saber qual é o modelo da sua mesa e guardar o que for necessário:
- Estático: o piso é fixo, calculado a partir do capital inicial. O robô compara o patrimônio com esse piso a cada tick.
- Trailing: o robô guarda o maior patrimônio já atingido e recalcula o piso a partir dele. Esse valor de pico precisa sobreviver a reinícios do terminal, e por isso deve ser salvo, por exemplo, em variáveis globais do terminal (GlobalVariableSet) ou em arquivo.
- Fim do dia: o piso só sobe com o fechamento diário, então o robô atualiza o pico apenas nesse momento.
Em todos os casos, a margem de segurança vale também aqui. Se o piso é um valor, o robô deve parar um pouco acima dele, porque um fechamento a mercado em movimento rápido pode sofrer derrapagem (slippage) e executar num preço pior do que o esperado.
Dica: Programe o bloqueio para disparar antes do limite e confirme o fechamento: depois de enviar a ordem de saída, verifique se a posição de fato sumiu. Se a corretora rejeitar a ordem, o robô tenta de novo no tick seguinte.
Cuidados que fazem diferença
- Teste a lógica de bloqueio no testador de estratégias e em conta demo antes de ligar numa conta de avaliação. O artigo sobre backtest, em /blog/como-fazer-backtest-metatrader-5, explica o passo a passo.
- O limite precisa valer para o conjunto de todos os robôs da conta, não só para um. Se houver mais de um robô, a vigilância deve olhar o patrimônio da conta inteira.
- Estratégias que dobram a posição depois da perda, como o martingale, chegam rápido ao limite. Veja os riscos em /blog/martingale-grid-robo-metatrader-5.
- Controle também o tamanho da posição, não só o bloqueio. A gestão de risco por operação está em /blog/gestao-de-risco-robo-forex-metatrader-5.
- Algumas mesas têm regras sobre robôs, notícias e horários de operação. Leia o regulamento: o código precisa respeitar o que a mesa permite.
Nada disso garante passar numa avaliação nem gerar resultado. O bloqueio apenas evita que um dia ruim, ou um erro do robô, encerre a conta por quebra de regra. A estratégia continua sendo a responsável pelo desempenho, e todo trading envolve risco de perda.
Resumo
- Limite diário e drawdown máximo são as regras que mais eliminam contas em prop firms.
- Leia o regulamento da mesa: a base do limite diário e o tipo de drawdown mudam de uma mesa para outra.
- Use ACCOUNT_EQUITY, via AccountInfoDouble, quando o resultado aberto conta no limite.
- Deixe o limite como parâmetro e programe uma margem de segurança abaixo do limite real.
- Ao atingir o limite interno, o robô fecha tudo, remove pendentes e bloqueia novas entradas.
Quer essa proteção de prop firm no seu robô?
- Descreva sua estratégia e as regras da sua mesa pelo Termo de Referência do site ou pelo WhatsApp.
- Eu analiso o que precisa ser programado e combino com você como a proteção vai funcionar.
- Você recebe o robô testado em conta demo, com o código-fonte.