APIs externas no MetaTrader 5 não são novidade. Mas integrar REST via WebRequest sem morrer de dor de cabeça? Isso ainda assusta boa parte dos desenvolvedores.
Hoje, discutir Integração de APIs Externas com MQL5 significa olhar de perto para uma camada que separa bots de mentira de sistemas de verdade. WebRequest, conexão REST, tratamento de headers, rate limiting. Tem coisa que ninguém te conta e que muda completamente a rotina de backtesting.
Por que a maioria dos EAs morre na porta da API
Ficar esperando resposta de um servidor externo dentro de um tick do MT5 é receita para congelar tudo. O MQL5 não é multi-thread de verdade. Cada chamada WebRequest bloqueia a fila de execução até o timeout. Isso significa que um EA que consulta preço em duas exchanges diferentes, uma cotação e um feed de notícias — ele simplesmente para de respirar.
Os erros mais comuns? Timeout padrão de 30 segundos, sem retry lógico, e parsing de JSON feito com substring. Resultado: dados corrompidos entrando no EA como se fossem verdadeiros. E aí você olha o gráfico de desempenho e acha que o modelo é ruim. Não é. É a integração.
WebRequest no MQL5: o que realmente funciona
A função WebRequest() aceita URL, método HTTP, headers, payload e timeout. Parece simples. Não é.
- Headers obrigatórios: Content-Type, Authorization, User-Agent
- Timeout ideal: 5 a 10 segundos para dados de mercado, 15 para relatórios
- Retries: implemente pelo menos 2 tentativas com exponential backoff
- Validação: sempre chegue o body antes de usar qualquer campo JSON
Um ponto que pouca gente menciona: o MQL5 não suporta keep-alive nativo. Cada requisição abre uma conexão nova. Em produção, isso gera latência que parece invisível até você medir com ticks reais.
Exemplo funcional de GET com tratamento de erro
| Passo | Ação |
|---|---|
| 1 | Criar objeto WebRequest com URL e método GET |
| 2 | Enviar com Send() e verificar resposta HTTP 200 |
| 3 | Ler body com Response().GetObject() ou Response().GetRaw() |
| 4 | Parsear com classes MQL5 ou função JSONParse() |
REST vs WebSocket: qual encaixa no MQL5
REST é síncrono. WebSocket é assíncrono. O MQL5 não suporta WebSocket nativamente. Isso não é trivial. Significa que feeds em tempo real de APIs como Binance, Coinbase ou Interactive Brokers precisam de workaround — polling contínuo ou bibliotecas de terceiros que simulam streaming.
A solução prática? Polling a cada 1-3 segundos com WebRequest GET para endpoints que permitam. Funciona. Não é elegante. Mas não morre.
Para quem precisa de verdadeira streaming, existem soluções como o material oficial de integração que implementam camada intermediária via DLL. Isso adiciona complexidade e risco de DLL não carregar em VPS.
Quem realmente precisa dessa integração
Desenvolvedores de EA institucional, squads de prop trading e analistas quantitativos que alimentam modelos fora do MT5 e importam sinais de volta. Não é para quem quer apenas um indicador bonito.
- Prop firms que cruzam dados de múltiplas exchanges
- EAs que consomem fundamentos (earnings, P/E, volume institucional)
- Sistemas de arbitragem que precisam de latência < 500ms entre dados
- Backtesting com dados históricos externos (cryptodata, forex feeds)
Diferenciais que importam
A integração via WebRequest nativo é gratuita. Não precisa de DLL, não precisa de licença extra. O custo é o tempo de implementação e os bugs silenciosos que aparecem em produção.
O que diferencia um EA confiável de um script amador? Rate limiting respeitado, parsing robusto e fallback para dados internos do MT5 quando a API falha. Se seu EA depende 100% de API externa e ela cai, seu capital fica exposto sem proteção alguma.
FAQ — Integração de APIs Externas com MQL5
É confiável usar WebRequest em ambiente ao vivo?
É confiável se você implementar retry, timeout controlado e fallback. A API do MQL5 é estável, mas não existe tratamento automático de falhas de rede. Seu código precisa lidar com isso.
Vale a pena investir tempo nessa integração?
Se seu modelo precisa de dados que o MT5 não tem nativamente — cotação de cripto em exchanges, índices futuros, sentiment de notícias — vale. Senão, está adicionando uma camada de risco desnecessária.
Qual a alternativa ao WebRequest nativo?
DLLs de terceiros que encapsulam libcurl ou WinHTTP. Performance melhor, suporte a WebSocket, mas instabilidade em VPS, dificuldade de atualização e risco de banimento se a DLL violar regras do broker.
Posso consumir API de cripto como Binance pelo MQL5?
Sim. Endpoint REST público, sem autenticação para dados de livro. Para operações (market, limit), precisa de API key com IP whitelist e tratamento de rate limit de 1200 requests por minuto.
Qual o timeout recomendado para dados de mercado?
5 segundos. Acima disso, em mercados voláteis, você está operando com dados defasados. Abaixo de 2 segundos, o MQL5 nem sempre responde a tempo devido ao loop de ticks.
A resposta técnica não é bonita. E não deveria ser. API é infraestrutura. Infraestrutura não tem glamour — tem SLA.




