⚔️ Comparativo Técnico

ONNX vs Python Socket vs DLL: Qual a Melhor Integração IA para MT5?

Por Dan Machado · 10 min de leitura

Três caminhos para rodar IA dentro de um Expert Advisor MT5. Cada um tem trade-offs reais. Este comparativo é prático — não é “qual é melhor”, é “qual usar em qual situação”. Se você ainda não conhece o ONNX nativo, comece pelo guia pillar.

ONNX Nativo

★ 9/10

Python Socket

★ 6/10

DLL Custom

★ 5/10

Como cada abordagem funciona

1. ONNX Nativo (recomendado em 2026)

EA chama OnnxRun() diretamente. O modelo está embarcado ou em MQL5\Files. Inferência roda no mesmo processo do MT5, sem rede, sem outro executável. É a abordagem oficial documentada em mql5.com.

2. Python Socket

Você abre um servidor Python (Flask, FastAPI, socket TCP simples) que mantém o modelo carregado. O EA envia features via socket, o servidor responde com predição. Requer Python rodando em paralelo.

3. DLL Custom

Compila uma DLL em C++ que embarca libtorch, tensorflow-c ou onnxruntime. O EA importa funções da DLL via #import. Funcionou bem na era pré-2023, hoje é overkill em quase todos os casos.

Comparativo cabeça-a-cabeça

AspectoONNXSocketDLL
Latência inferênciaComparável a C++ (oficial mql5.com)+ overhead de redeNativo C++
Setup inicialSimples (1 arquivo)Médio (rodar servidor)Complexo (compilar C++)
Dependências externasZeroPython + libs + servidorCompilador C++ + libs
VPS friendlySim (só MT5)Requer mais recursosSim mas dor
Distribuir EA1 arquivo .ex5EA + servidor + PythonEA + DLL
Atualizar modeloTroca .onnx ou recompilaRestart do servidorRecompila DLL
Frameworks suportadosTodos com export ONNXTodos (Python livre)O que tiver C API
Multi-EA simultâneoTrivial (cada EA tem sessão)Cuidado com concorrênciaCuidado com estado
Risco de quebrarBaixo (suportado oficialmente)Alto (rede, versões)Alto (ABI changes)
Curva de aprendizadoBaixaMédiaAlta (C++)

Latência — o número que importa

⚠️ Sobre números de benchmark

A documentação oficial mql5.com afirma que “a velocidade de execução do MQL5 [com ONNX] é comparável à de aplicações C++”. Não publica milissegundos absolutos. Os números abaixo são estimativas ordem de magnitude baseadas em testes empíricos próprios e da comunidade — não considere precisão absoluta.

Cenário típicoONNXSocket localhostSocket VPS→cloudDLL
Modelo pequeno (RF, ~1 MB)< 1 ms~5-15 ms~30-100 ms< 1 ms
Modelo médio (LSTM, ~10 MB)~2-5 ms~10-25 ms~50-150 ms~2-5 ms
Modelo grande (Transformer, ~100 MB)~20-80 ms~50-200 ms~200-500 ms~20-80 ms

Para scalping em tick frequency, latência < 5 ms importa. Para swing em H1+, qualquer um serve. Sempre faça seu próprio benchmark — hardware e modelo importam.

Quando usar cada um

Use ONNX se:

✓ Você quer o EA self-contained (1 arquivo .ex5)
✓ Rodar em VPS com poucos recursos
✓ Distribuir para clientes ou mql5.com Market
✓ Mínima manutenção a longo prazo
✓ Modelo já roda em PyTorch / TF / Sklearn / XGBoost
✓ Latência baixa importa
✓ É 2026 — esta é a opção default sensata

Use Python Socket se:

✓ Você precisa de bibliotecas Python que não exportam ONNX (LightGBM com features categóricas complexas, modelos custom)
✓ Está prototipando rapidamente e não quer recompilar a cada mudança
✓ Já tem infra Python rodando (Jupyter, MLflow, API ML)
✓ Vai compartilhar o modelo entre múltiplos EAs / aplicações
✓ Modelo precisa de pré-processamento Python pesado (tokenização NLP, etc.)

Use DLL Custom se:

✓ Você já tem expertise em C++
✓ Precisa integrar lib específica sem suporte ONNX (rara hoje)
✓ Performance absoluta com modelo super customizado
✓ Tem tempo e energia para manter ABI compatibility entre versões MT5
Caso contrário: ignore DLL. Em 2026, raramente vale.

Workflow de produção recomendado

  1. Prototipa em Python notebook — explora, treina, valida
  2. Exporta para ONNX com skl2onnx ou torch.onnx.export
  3. Valida com onnxruntime no Python — predições idênticas ao framework original
  4. Embarca como #resource no EA MQL5
  5. Backteste no Strategy Tester
  6. Demo trade 30 dias
  7. Live com stake mínimo

Fluxo prático passo-a-passo em Como exportar Python para ONNX e usar no MT5.

Casos em que socket ainda ganha

Um caso real: você quer rodar um LLM (modelo de linguagem) que analisa notícias em tempo real e devolve sentimento. LLMs nem sempre exportam bem para ONNX (alguns operadores transformer custom não convertem). Aí, manter um servidor Python com Hugging Face transformers + endpoint REST faz mais sentido. O EA chama o endpoint a cada hora (não a cada tick), latência de 200ms é irrelevante.

Outro caso: reinforcement learning online, onde o modelo se atualiza durante a execução. Não dá pra recompilar ONNX a cada update — servidor Python mantém o estado.

Conclusão honesta

🏆 Default 2026: ONNX

Para 90% dos casos de uso de IA em trading no MT5, ONNX nativo é a escolha óbvia. Simples, rápido, robusto, oficialmente suportado. Reserve socket para casos onde Python tem que estar vivo (LLMs, RL online, prototipação) e DLL quase nunca.

🚀 Para testar EAs com ONNX: demo Deriv MT5 ($10.000 virtuais):

Abrir Demo Deriv MT5

Tópicos relacionados

DM

Dan Machado

Founder IA Trader Pro · Arquitetura de bots

⚠️ Disclaimer: Conteúdo educacional, não é recomendação de investimento. Benchmarks de latência são estimativas — sempre meça no seu hardware. Modelos de IA não garantem lucro. Trading envolve risco substancial. Artigo contém link de afiliado Deriv. Disclaimer completo.