🧠 Cinco Arquiteturas Práticas

5 Modelos ONNX para Trading no MT5: LSTM, XGBoost, CNN, Random Forest e Transformer

Por Dan Machado · 16 min de leitura

Cinco arquiteturas de machine learning, cinco casos de uso reais para trading, todas exportáveis para ONNX e consumíveis em Expert Advisor MT5. Para cada uma: para que serve, quando faz sentido, como exportar, exemplo mínimo. Pré-requisito conceitual: guia pillar ONNX no MT5.

⚠️ Honest disclaimer antes da lista

Nenhum modelo, por mais sofisticado, garante lucro. A diferença entre trader profissional e amador não está no modelo — está em feature engineering, validação rigorosa, risk management e disciplina. Use estas arquiteturas como ponto de partida, não como atalho.

Comparativo rápido

ModeloQuando usarComplexidadeONNX export
Random ForestBaseline, classificação simplesBaixaskl2onnx
XGBoostTabular features ricasMédiaonnxmltools
CNN 1DPadrões em séries temporaisMédiatorch.onnx.export
LSTM/GRUDependências temporais longasAltatorch.onnx.export
TransformerMulti-asset, multi-featureMuito altatorch.onnx.export (cuidado)

1. Random Forest — o baseline honesto

01
🌳 Ensemble Trees

Random Forest Classifier

Framework: Sklearn Treino: minutos Modelo .onnx: ~1-10 MB Inferência: < 1 ms

Para que serve: classificação binária de direção (sobe/desce próximo candle) ou multi-classe (forte alta / leve alta / lateral / leve baixa / forte baixa). É o primeiro modelo que todo projeto de IA em trading deveria experimentar — se Random Forest com 200 árvores não bate o random (50%), seu problema está nas features, não no modelo.

Quando faz sentido: features tabulares (indicadores técnicos, retornos lagged, volume, hora do dia, dia da semana). Funciona em qualquer timeframe. Robusto a outliers. Não precisa normalização.

✓ Por que começar aqui

Treina em 1 minuto. Não tem hiperparâmetros para perder o sono. Resultado serve como benchmark: se LSTM elaborada bater o Random Forest em apenas 1-2 pontos percentuais, talvez não compense a complexidade.

▸ python · rf_export.py
from sklearn.ensemble import RandomForestClassifier
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType

model = RandomForestClassifier(n_estimators=200, max_depth=8)
model.fit(X_train, y_train)

initial_type = [('input', FloatTensorType([None, n_features]))]
onnx_model = convert_sklearn(model, initial_types=initial_type, target_opset=15)

with open("rf.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())

Tutorial completo: Exportar Sklearn para ONNX e usar no MT5.

2. XGBoost — o vencedor de Kaggle aplicado a mercado

02
⚡ Gradient Boosting

XGBoost Classifier / Regressor

Framework: XGBoost Treino: minutos-horas Modelo .onnx: ~5-50 MB Inferência: ~1-3 ms

Para que serve: mesmo que Random Forest, mas tipicamente 2-5% mais accurate em problemas tabulares. Trocou Random Forest por XGBoost em centenas de competições Kaggle e quase sempre ganhou. Para trading, brilha quando você tem muitas features e quer que o modelo descubra interações não-lineares.

Quando faz sentido: você já tem RF rodando e quer espremer mais alguns pontos de accuracy. Tem features ricas (50+ indicadores diferentes, dados de orderbook, sentiment). Precisa de regressão (prever magnitude, não só direção).

Cuidado: XGBoost é mais sensível a overfit em séries temporais. Use early_stopping_rounds com validation set temporal separado.

▸ python · xgb_export.py
import xgboost as xgb
from onnxmltools.convert import convert_xgboost
from onnxconverter_common.data_types import FloatTensorType

model = xgb.XGBClassifier(
    n_estimators=300, max_depth=6, learning_rate=0.05,
    early_stopping_rounds=20, eval_metric='logloss'
)
model.fit(X_train, y_train, eval_set=[(X_val, y_val)])

initial_type = [('input', FloatTensorType([None, n_features]))]
onnx_model = convert_xgboost(model, initial_types=initial_type)

with open("xgb.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())

3. CNN 1D — encontra padrões visuais em séries

03
🔍 Convolutional Network

1D CNN para Pattern Recognition

Framework: PyTorch / TF Treino: minutos-horas Modelo .onnx: ~1-20 MB Inferência: ~1-5 ms

Para que serve: identificar padrões locais em séries temporais. Pense como “scanner que procura formações de candle” — mas em vez de regras hard-coded (martelo, engolfo, estrela cadente), a CNN aprende sozinha quais sequências de candle são preditivas.

Quando faz sentido: quando você suspeita que existem padrões locais de curto prazo (5-30 candles) que se repetem. Funciona bem em ativos com movimentação por “ondas” (synthetic indices Deriv como Volatility 75).

Vantagem técnica: CNNs são mais rápidas de treinar que LSTMs e exportam para ONNX sem dor de cabeça (todas as operações são suportadas).

▸ python · cnn1d.py (esqueleto)
import torch.nn as nn

class CNN1D(nn.Module):
    def __init__(self, in_channels=4, seq_len=30, n_classes=2):
        super().__init__()
        self.conv1 = nn.Conv1d(in_channels, 32, kernel_size=5, padding=2)
        self.conv2 = nn.Conv1d(32, 64, kernel_size=3, padding=1)
        self.pool  = nn.MaxPool1d(2)
        self.fc    = nn.Linear(64 * (seq_len // 4), n_classes)
    
    def forward(self, x):
        # x shape: (batch, channels=OHLC, seq_len)
        x = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        x = x.flatten(1)
        return self.fc(x)

# Export
torch.onnx.export(model, dummy_input, "cnn1d.onnx",
    input_names=['input'], output_names=['output'], opset_version=15)

4. LSTM / GRU — memória para dependências longas

04
🧠 Recurrent Neural Network

LSTM (Long Short-Term Memory)

Framework: PyTorch / TF Treino: horas Modelo .onnx: ~5-50 MB Inferência: ~2-10 ms

Para que serve: a arquitetura “padrão de mercado” para séries temporais antes dos Transformers. LSTM mantém estado interno (a “memória”) que carrega informação por dezenas/centenas de timesteps. Útil quando o contexto distante importa — por exemplo, regime de volatilidade que muda lentamente.

Quando faz sentido: swing trading em H1/H4/D1 onde tendência se forma ao longo de 50-200 candles. Multi-step forecasting (prever os próximos 5 candles, não só o próximo). Sequências com dependências temporais não-locais.

Cuidado: LSTM treinada mal facilmente sofre data leakage. Use sempre split temporal estrito. Não use shuffle. Verifique que o backtest reproduz exatamente a inferência live.

O tutorial passo-a-passo tem o código LSTM completo, training loop, e exportação para ONNX. GRU é a versão “mais simples” de LSTM — frequentemente performa igual ou melhor com menos parâmetros.

5. Transformer — quando você precisa de mais

05
⚛️ Attention-Based

Transformer / Time-Series Transformer

Framework: PyTorch Treino: horas-dias Modelo .onnx: ~20-200 MB Inferência: ~10-50 ms

Para que serve: a arquitetura que dominou NLP e que tem sido adaptada para séries temporais (Informer, Autoformer, PatchTST, Time-Series Transformer). Aprende relações “atenção” entre todos os timesteps simultaneamente — não sequencial como LSTM.

Quando faz sentido: multi-asset ou multi-feature. Por exemplo: prever EURUSD usando EURUSD + USD index + ouro + bonds 10Y + VIX simultaneamente. Transformer aprende quais relações cross-asset importam em cada momento.

⚠️ Reality check sobre Transformers em trading

A literatura acadêmica mostra que Transformers nem sempre superam LSTMs em séries temporais financeiras. O paper “Are Transformers Effective for Time Series Forecasting?” (Zeng et al., AAAI 2023) mostrou que MLPs lineares simples às vezes batem Transformers. Não use Transformer por modinha — use quando o problema realmente justifica.

Cuidado com export: alguns operadores de attention custom podem não converter para ONNX. Use implementações padrão (nn.TransformerEncoder do PyTorch) que exportam bem. Modelos muito grandes (centenas de MB) carregam lentamente no MT5.

Qual escolher para seu projeto?

Sua situaçãoComece com
Nunca treinou IA antesRandom Forest
Tem RF rodando, quer melhorarXGBoost
Suspeita de padrões locais visuaisCNN 1D
Swing trading, contexto longo importaLSTM ou GRU
Multi-asset, features complexasTransformer
Em dúvidaRandom Forest (sempre)

Pipeline padrão para qualquer modelo

  1. Coleta de dados via mt5.copy_rates_from_pos() no Python
  2. Feature engineering — retornos lagged, indicadores, contexto temporal
  3. Split temporal 80/20 sem shuffle
  4. Treina no train, valida no test holdout
  5. Exporta para ONNX usando o exportador do framework
  6. Valida em Python com onnxruntime — predições devem bater com framework original
  7. Embarca no EA MQL5 via #resource + OnnxCreateFromBuffer
  8. Backteste no Strategy Tester do MT5
  9. Demo trade 30+ dias com risk management
  10. Live com stake mínimo, escala gradual

✓ Princípios universais

1. Modelo simples que funciona > modelo complexo que pode funcionar
2. Feature engineering bate arquitetura 9 em cada 10 vezes
3. Validação temporal é sagrada — nunca shuffle em série financeira
4. Backtest profissional usa 6+ meses out-of-sample
5. Risk management mata mais bots que modelo ruim

🚀 Para deployar modelos ONNX em demo MT5 ($10.000 virtuais):

Abrir Demo Deriv MT5

Tópicos relacionados

DM

Dan Machado

Founder IA Trader Pro · ML aplicado a trading desde 2019

⚠️ Disclaimer: Conteúdo educacional, não é recomendação de investimento. Nenhuma arquitetura de IA garante lucro em trading. Past performance em backtest não garante resultado em live. Trading envolve risco substancial de perda — opere apenas com capital que você pode perder integralmente. Sempre teste em demo antes de operar real. Artigo contém link de afiliado Deriv. Disclaimer completo.