Cursos Para Traders Estratégias Trader Dossiê Técnico: Como Criar um Robô de Fechamento no MQL5

Dossiê Técnico: Como Criar um Robô de Fechamento no MQL5

Programar um robô que encerre posições ao final do pregão no MQL5 não é só questão de copiar‑colar um script pronto. O usuário precisa lidar com a lógica de tempo, com a volatilidade que costuma disparar nos últimos minutos e ainda garantir que o fechamento não deixe ordens pendentes ou slippages inesperados. O objetivo prático é simples: ao soar o relógio da sessão, o algoritmo deve liquidar tudo que estiver aberto, obedecendo a critérios de risco definidos previamente. No mundo real, isso costuma ser usado por traders que preferem “overnight‑free” – eles não querem exposição ao gap de abertura do dia seguinte.

Como definir o gatilho de fechamento

  • Horário de mercado: use TimeCurrent() comparado ao horário de término da sessão (ex.: 23:55 GMT). Ajuste para o fuso do ativo.
  • Filtro de volatilidade: verifique iATR nos últimos 5 minutos; se o ATR ultrapassar um limiar, adie o fechamento para evitar execuções ruins.

Estrutura básica do EA

BlocoFunção
OnInit()Configura timers e parâmetros de risco.
OnTimer()Checa se chegou ao horário‑alvo e dispara CloseAll().
CloseAll()Itera PositionsTotal() e envia OrderClose() com preço de mercado.

Gestão de erros ao fechar

Ordens podem falhar por falta de liquidez ou por requote. A prática mais segura é:

  • Re‑tentar até 3 vezes com Sleep(100) entre tentativas.
  • Se ainda falhar, registrar o ticket em um log e enviar alerta por SendNotification.

Exemplo prático

 void CloseAll() { for(int i=PositionsTotal()-1;i>=0;i--) { ulong ticket=PositionGetTicket(i); if(!OrderClose(ticket,PositionGetDouble(POSITION_VOLUME),SymbolInfoDouble(_Symbol,SYMBOL_BID),3)) Print("Falha ao fechar ",ticket); } } 

Esse trecho funciona bem em pares major, mas pode falhar em ativos com spread alto (ex.: commodities exóticas). Nesses casos, inclua um limite de desvio máximo antes de abortar.

Quando o robô pode falhar

  • Servidores sobrecarregados: no horário de fechamento, a carga de pedidos aumenta e o broker pode rejeitar ordens.
  • Fusos horários cruzados: se o calendário de feriados não for considerado, o EA pode tentar fechar em dias em que o mercado está fechado.

FAQ rápido

  • Posso usar o mesmo EA em contas diferentes? Sim, mas ajuste TimeGMTOffset para cada corretora.
  • O que fazer se o EA não fechar nada? Verifique se o timer foi registrado ( EventSetTimer() ) e se o horário está correto.

Se quiser aprofundar a implementação, confira a documentação oficial do MQL5 que traz exemplos prontos e dicas de otimização. O ponto crítico é testar em modo strategy tester com dados reais de fim de sessão; só assim você descobre se o robô realmente entrega o fechamento limpo que prometeu.

Primeiros passos após a compra

  • Baixe o arquivo .ex5 e salve na pasta MQL5/Experts do terminal.
  • Reinicie o MetaTrader 5 para que o compilador registre o robô.
  • Abra o Assistente de Estratégia e selecione “Fechamento de Mercado”.

Configuração inicial – parâmetros críticos

ParâmetroDescriçãoValor padrão
CloseHourHora (GMT) em que o robô encerra posições.15:00
CloseMinuteMinuto da hora de fechamento.00
MaxSpreadSpread máximo aceitável (pips).3
RiskPercentPercentual do saldo a arriscar por operação.1.5%

Módulos prioritários a ativar

  • Gestão de Risco: controla o tamanho da posição conforme RiskPercent e o valor do lote mínimo.
  • Filtro de Liquidez: impede execuções quando o spread ultrapassa MaxSpread.
  • Timer de Fechamento: dispara o OrderClose() no instante configurado.

Checklist operacional – rotina diária

  1. Verifique o saldo e o drawdown no Relatório de Conta.
  2. Confirme que o Timer de Fechamento está sincronizado com o fuso horário do servidor.
  3. Teste o Filtro de Liquidez em modo Strategy Tester (1 dia histórico).
  4. Ative o Modo Demo por 48 h antes de migrar para conta real.
  5. Registre a hora exata de cada fechamento no Journal para auditoria.

Erros comuns e como evitá‑los

  • Spread excessivo – O robô tenta fechar e gera slippage. Solução: ajuste MaxSpread ou use TrailingStop antes do fechamento.
  • Fuso horário desajustado – Fechamento ocorre antes ou depois do esperado. Solução: alinhe o relógio do terminal com o horário do broker.
  • Saldo insuficiente – O cálculo de risco gera lote zero. Solução: aumente o RiskPercent ou reduza o número de posições simultâneas.

Workflow resumido – de 0 a 100 % de operação

 1️⃣ Instalação → 2️⃣ Configuração de parâmetros → 3️⃣ Teste em Strategy Tester → 4️⃣ Validação em conta demo (48 h) → 5️⃣ Ativação em conta real → 6️⃣ Monitoramento diário (checklist) → 7️⃣ Ajustes mensais (spread, risco) 

FAQ rápido

  • Posso mudar a hora de fechamento durante o dia? Sim, basta editar CloseHour/CloseMinute e recompilar.
  • O robô aceita múltiplos pares? O código está preparado para ArraySymbol; basta listar os símbolos desejados.
  • Como saber se o filtro de liquidez está ativo? No Journal aparece “Spread OK” ou “Spread excessivo – ordem ignorada”.

Quem realmente se beneficia de um robô de fechamento de mercado em MQL5?

Se você vive de day trade e sente que o fim de sessão é um caos de decisões, este robô pode ser a ponte entre ansiedade e disciplina. Não vale para quem aceita a volatilidade como parte do jogo ou para quem já possui um sistema de saída manual bem calibrado.

Perfil ideal

  • Trader semi‑automatizado: Usa indicadores, mas ainda depende de ação humana para entrada.
  • Gestor de risco obsessivo: Precisa de stop‑loss e take‑profit consistentes, sem “olho na tela”.
  • Operador de contas pequenas a médias: Busca reduzir custos de slippage que surgem ao fechar posições manualmente.

Quem provavelmente não terá bom aproveitamento

  • Investidores de longo prazo que raramente operam dentro do período intradiário.
  • Programadores experientes que preferem escrever scripts sob medida para cada ativo.
  • Quem depende de notícias de última hora para fechar posições; o algoritmo fecha por horário, não por evento.

Limitações práticas

O robô encerra posições estritamente no horário pré‑definido. Se o mercado sofrer um gap antes do fechamento, a ordem pode ser executada a preço de abertura, gerando slippage inesperado. Não há suporte nativo a múltiplos fusos horários; funciona apenas com o horário do servidor MetaTrader 5.

FAQ contextual

PerguntaResposta
Posso usar o robô em contas demo?Sim, teste ao menos 10.000 ticks para validar a sincronização de horário.
O que acontece se o servidor cair às 17:58?O algoritmo tenta enviar a ordem; se falhar, a posição permanece aberta até o próximo tick.
É possível combinar com trailing stop?Não nativamente; requer modificação de código.

Checklist final antes de comprar

  • Confirmação de horário do seu broker (GMT +0 ou +3?).
  • Teste de slippage em back‑test com spreads reais.
  • Alocação de capital que permita perdas de até 2% por fechamento tardio.
  • Disponibilidade de contas demo para validar por no mínimo 30 dias.

Parecer editorial

O produto entrega o que promete: fechar posições automaticamente ao fim de mercado, reduzindo a necessidade de vigilância constante. Contudo, ele não resolve problemas de volatilidade inesperada nem substitui uma boa estratégia de entrada. Para traders que valorizam consistência e têm um horário de operação bem definido, o risco‑/benefício é positivo, desde que aceitem a possibilidade de slippage e a falta de adaptações em tempo real.

Próximos passos: inicie um teste em conta demo, ajuste o horário conforme o servidor, e só então migre para a conta real. Se as métricas de slippage ficarem acima de 0,2 pips, considere aprimorar o código ou buscar um fornecedor com gerenciamento de eventos de notícia.

Experimentar a demo agora

Deixe uma resposta

Related Post