🧠 Guia Pillar 2026

ONNX no MT5: Guia Completo para Rodar IA em Expert Advisors

Por Dan Machado · Atualizado 2026 · 14 min de leitura

📋 O que você vai aprender

  • O que é ONNX e por que mudou o jogo da IA em trading
  • Suporte nativo no MQL5 — sem DLL, sem socket, sem gambiarra
  • Fluxo completo: Python → ONNX → Expert Advisor
  • Quais frameworks ML exportam para ONNX (PyTorch, TensorFlow, Sklearn, XGBoost)
  • Validação no Strategy Tester antes de operar com capital real
  • Limitações reais que não dizem nas propagandas

O que é ONNX (Open Neural Network Exchange)

ONNX é um formato aberto para representar modelos de machine learning. Foi criado pela Microsoft em parceria com Facebook (hoje Meta) e cresceu até virar padrão da indústria com suporte de PyTorch, TensorFlow, scikit-learn, XGBoost e dezenas de outros frameworks.

A ideia central é simples: você treina o modelo no framework que preferir, exporta para um arquivo .onnx único, e depois consome esse arquivo em qualquer runtime que entenda ONNX — incluindo o MetaTrader 5.

💡 Analogia

Pense em ONNX como o PDF dos modelos de IA: você criou no Word, Pages ou Google Docs — abre em qualquer leitor. Modelo treinado em PyTorch no notebook do cientista de dados, rodando no terminal MT5 da corretora sem precisar instalar PyTorch.

Por que ONNX + MT5 mudou o jogo

Antes do suporte nativo, integrar IA com MT5 era doloroso. As opções eram:

  • Socket TCP/IP entre EA e servidor Python — adiciona latência de rede, ponto único de falha
  • REST API chamando endpoint externo — pior ainda em latência
  • DLL customizada em C++ embarcando libtorch ou tensorflow C — difícil de manter, frágil entre versões
  • Reescrever o modelo em MQL5 — inviável para arquiteturas complexas (LSTM, Transformer)

Hoje, a documentação oficial em mql5.com/en/docs/onnx deixa claro que “a velocidade de execução do MQL5 é comparável à de aplicações em C++” rodando ONNX. Tradução: você ganha a flexibilidade do Python pra treinar com a performance do C++ pra inferir.

O fluxo completo em 3 etapas

De acordo com a documentação oficial, todo o processo se resume a:

  1. Treinar o modelo em uma plataforma de terceiros, como Python (PyTorch, TensorFlow, Sklearn)
  2. Converter o modelo para ONNX usando a biblioteca correspondente do framework
  3. Incluir o modelo ONNX em um Expert Advisor usando as funções ONNX nativas e rodar no terminal MT5

🔥 Bônus do MetaEditor

O MetaEditor permite rodar scripts Python direto do editor (configurando o caminho do executável Python nas configurações). Você pode treinar, exportar e validar o modelo sem sair do ambiente MT5. Tutorial detalhado em Como exportar Python para ONNX e usar no MT5.

Funções ONNX nativas no MQL5

A linguagem MQL5 expõe um conjunto enxuto e completo de funções para manipular sessões ONNX. Cobertura essencial:

FunçãoPropósito
OnnxCreateCarrega modelo de arquivo .onnx (pasta MQL5\Files\)
OnnxCreateFromBufferCarrega modelo de array em memória (útil para embedar no EA)
OnnxRunExecuta inferência com inputs e devolve outputs
OnnxReleaseEncerra a sessão ONNX (chamar em OnDeinit)
OnnxSetInputShapeDefine o shape dos tensores de entrada
OnnxSetOutputShapeDefine o shape dos tensores de saída
OnnxGetInputCount / OutputCountInspeciona quantos inputs/outputs o modelo tem
OnnxGetInputName / OutputNameNome dos tensores (útil para debug)
OnnxGetInputTypeInfo / OutputTypeInfoTipos de dados esperados

Referência completa de cada função em OnnxCreate, OnnxRun e Funções MQL5 — Referência Completa.

Exemplo mínimo funcional

Esqueleto de Expert Advisor que carrega um modelo ONNX, faz uma previsão a cada novo candle e loga o resultado:

▸ MQL5 · OnnxMinimalEA.mq5
//+------------------------------------------------------------------+
//|                                            OnnxMinimalEA.mq5     |
//|                                       IA Trader Pro 2026         |
//+------------------------------------------------------------------+
#property strict
#resource "\\Files\\meu_modelo.onnx" as uchar ExtModel[]

long     handle = INVALID_HANDLE;
datetime lastBarTime = 0;

int OnInit()
{
    // Carrega modelo embarcado como resource
    handle = OnnxCreateFromBuffer(ExtModel, ONNX_DEFAULT);
    if(handle == INVALID_HANDLE)
    {
        Print("Erro ao criar sessão ONNX: ", GetLastError());
        return(INIT_FAILED);
    }
    
    // Define shape esperado: 10 candles, 4 features (OHLC), 1 batch
    const long input_shape[]  = {1, 10, 4};
    const long output_shape[] = {1, 1};
    
    OnnxSetInputShape(handle, 0, input_shape);
    OnnxSetOutputShape(handle, 0, output_shape);
    
    Print("✓ Modelo ONNX carregado | Inputs: ", OnnxGetInputCount(handle),
          " | Outputs: ", OnnxGetOutputCount(handle));
    return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
    if(handle != INVALID_HANDLE)
        OnnxRelease(handle);
}

void OnTick()
{
    datetime current = iTime(_Symbol, PERIOD_CURRENT, 0);
    if(current == lastBarTime) return;
    lastBarTime = current;
    
    // Coleta últimos 10 candles OHLC
    MqlRates rates[10];
    if(CopyRates(_Symbol, PERIOD_CURRENT, 1, 10, rates) != 10) return;
    
    matrix input(10, 4);
    for(int i = 0; i < 10; i++)
    {
        input[i][0] = (float)rates[i].open;
        input[i][1] = (float)rates[i].high;
        input[i][2] = (float)rates[i].low;
        input[i][3] = (float)rates[i].close;
    }
    
    vector output(1);
    if(!OnnxRun(handle, ONNX_DEFAULT, input, output))
    {
        Print("Erro OnnxRun: ", GetLastError());
        return;
    }
    
    double prediction = output[0];
    PrintFormat("Predição modelo: %.5f | Close atual: %.5f", prediction, rates[9].close);
    
    // Aqui você implementa sua lógica: prediction > threshold → BUY, etc.
}

⚠️ Validação no Strategy Tester

A documentação oficial recomenda validar o modelo no Strategy Tester do MT5 antes de operar com capital real. O projeto público ONNX.Price.Prediction (disponível no MetaEditor em Toolbox → Public Projects) é o exemplo de referência da própria MetaQuotes. Use-o como ponto de partida.

Frameworks Python compatíveis

Qualquer framework com exportador ONNX gera modelo que roda no MT5:

FrameworkBiblioteca de exportCaso de uso típico
PyTorchtorch.onnx.export()LSTM, Transformer, redes profundas
TensorFlow / Kerastf2onnxCNN, séries temporais
Scikit-learnskl2onnxRandom Forest, SVM, regressão
XGBoostonnxmltoolsClassificação de tendência, gradient boosting
LightGBMonnxmltoolsMesma família do XGBoost, mais rápido
CatBoostconvertidor nativoTrabalha bem com features categóricas

Para casos práticos de cada arquitetura aplicada a trading, veja 5 Modelos ONNX para Trading no MT5.

Limitações honestas

ONNX no MT5 é poderoso, mas não é mágico. Pontos reais a considerar:

  • Operadores suportados: nem toda operação de PyTorch/TF tem equivalente ONNX. A documentação remete ao arquivo OperatorKernels.md do ONNX Runtime — verifique antes de gastar dias treinando algo que não exporta.
  • Tamanho do modelo: modelos gigantes (LLMs de bilhões de parâmetros) não cabem na memória nem fazem sentido em latência de tick. Pense em modelos de até dezenas/centenas de MB.
  • GPU é opcional: por padrão, ONNX Runtime no MT5 escolhe CPU. Para usar GPU CUDA, é preciso configurar flags específicas (ENUM_ONNX_FLAGS com ONNX_GPU_DEVICE_N).
  • Overfitting é seu inimigo: rodar IA no MT5 é fácil; treinar um modelo que generaliza para mercado real é onde 95% dos projetos falham. ONNX não te salva de backtest mal feito.
  • Backtest ≠ Live: slippage, spread variável e latência podem matar uma estratégia que parecia perfeita no Strategy Tester.

📚 Comparação com outras integrações

Para entender quando vale ONNX nativo, quando vale socket Python e quando vale DLL custom, leia ONNX vs Python Socket vs DLL: Qual a Melhor Integração?.

FAQ

Preciso saber Python para usar ONNX no MT5?

Sim, para treinar o modelo. Python é onde acontece o trabalho pesado. O EA em MQL5 só consome o arquivo .onnx pronto. Se você não programa Python, comece pelo tutorial passo-a-passo.

Funciona em qualquer corretora MT5?

Sim. ONNX é parte do terminal MT5, não do servidor da corretora. Funciona em Deriv MT5, Exness, IC Markets, Pepperstone, qualquer broker com MT5.

Posso usar o Deriv MT5 com EA ONNX?

Sim. Deriv suporta EAs completos no MT5, incluindo modelos ONNX. Demo gratuita disponível para testes.

ONNX roda no MT4?

Não. O suporte nativo a ONNX é exclusivo do MQL5/MT5. No MT4 só via DLL externa, que não é trivial.

Qual o tamanho máximo de modelo?

A documentação oficial não fixa um limite teórico, mas na prática modelos acima de algumas centenas de MB começam a causar lentidão na carga e na inferência. Para uso em tick frequency, mantenha modelos enxutos.

O modelo treina dentro do MT5?

Não. O MT5 só roda inferência. Treinamento acontece em Python (com bibliotecas como PyTorch ou Sklearn). O MetaEditor permite executar scripts Python para o pipeline de treino, mas o “cérebro” matemático está fora.

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

Abrir Conta Demo Deriv

Próximos passos

DM

Dan Machado

Founder IA Trader Pro · Especialista em IA aplicada a trading

⚠️ Disclaimer: Conteúdo educacional, não é recomendação de investimento. Trading envolve risco substancial de perda. Modelos de IA não garantem lucro — sempre teste em conta demo antes de operar com capital real. No Brasil, derivativos são regulados pela CVM. Artigo contém link de afiliado Deriv. Disclaimer completo.