🧠 Năm Kiến trúc Thực tế

5 Mô hình ONNX cho Trading MT5: LSTM, XGBoost, CNN, Random Forest, Transformer

Bởi Dan Machado · 16 phút đọc

Năm kiến trúc machine learning, năm trường hợp sử dụng trading thực tế, tất cả đều có thể xuất sang ONNX và sử dụng trong Expert Advisor MT5.

⚠️ Tuyên bố trung thực: Không có mô hình nào, dù tinh vi đến đâu, đảm bảo lợi nhuận. Sự khác biệt giữa trader chuyên nghiệp và nghiệp dư không nằm ở mô hình — đó là feature engineering, validation nghiêm ngặt, quản lý rủi ro và kỷ luật.

So sánh nhanh

Mô hình Khi nào dùng Độ phức tạp Export ONNX
Random Forest Baseline Thấp skl2onnx
XGBoost Features tabular phong phú Trung bình onnxmltools
CNN 1D Mẫu cục bộ trong chuỗi Trung bình torch.onnx.export
LSTM/GRU Phụ thuộc thời gian dài Cao torch.onnx.export
Transformer Multi-asset, multi-feature Rất cao torch.onnx.export

1. Random Forest — baseline trung thực

Framework: Sklearn · Huấn luyện: phút · Suy luận: < 1 ms

Phân loại nhị phân hướng (lên/xuống) hoặc nhiều lớp. Mô hình đầu tiên mọi dự án AI-in-trading nên thử — nếu RF với 200 trees không vượt qua ngẫu nhiên (50%), vấn đề ở features, không phải mô hình. Train trong 1 phút.

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())

2. XGBoost — người chiến thắng Kaggle áp dụng cho thị trường

Framework: XGBoost · Suy luận: ~1-3 ms

Giống RF nhưng thường chính xác hơn 2-5% trên tabular. Tỏa sáng với nhiều features (50+ chỉ báo, orderbook, sentiment). Cẩn thận: dễ overfit hơn trên chuỗi thời gian — dùng early_stopping_rounds.

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)
model.fit(X_train, y_train, eval_set=[(X_val, y_val)])

3. CNN 1D — tìm mẫu trực quan

Framework: PyTorch/TF · Suy luận: ~1-5 ms

Xác định các mẫu cục bộ trong chuỗi thời gian — như ‘scanner tìm formations candle’ nhưng tự học các mẫu. Hoạt động tốt với mẫu ngắn 5-30 candles, đặc biệt synthetic indices (Deriv V75). Train nhanh hơn LSTM, xuất sạch sang ONNX.

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 = self.pool(torch.relu(self.conv1(x)))
        x = self.pool(torch.relu(self.conv2(x)))
        return self.fc(x.flatten(1))

4. LSTM / GRU — bộ nhớ cho phụ thuộc dài

Framework: PyTorch/TF · Suy luận: ~2-10 ms

Kiến trúc ‘chuẩn’ cho chuỗi thời gian trước Transformer. LSTM giữ trạng thái nội bộ (bộ nhớ) mang thông tin qua hàng chục/hàng trăm timesteps. Hữu ích cho swing trading H1/H4/D1, các chế độ biến động thay đổi chậm. Cẩn thận: data leakage dễ xảy ra — luôn split thời gian nghiêm ngặt, không bao giờ shuffle. GRU là em họ đơn giản hơn của LSTM.

5. Transformer — khi bạn cần nhiều hơn

Framework: PyTorch · Suy luận: ~10-50 ms

Kiến trúc thống trị NLP, được điều chỉnh cho chuỗi thời gian (Informer, Autoformer, PatchTST). Học các mối quan hệ ‘attention’ qua tất cả timesteps đồng thời. Tỏa sáng trong multi-asset (dự đoán EURUSD dùng EURUSD + DXY + vàng + bonds + VIX).

⚠️ Reality check: Paper ‘Are Transformers Effective for Time Series Forecasting?’ (Zeng et al., AAAI 2023) chỉ ra MLPs tuyến tính đơn giản đôi khi đánh bại Transformers. Đừng dùng Transformer vì hype.

Chọn cái nào cho dự án của bạn?

Tình huống của bạn Bắt đầu với
Chưa từng train AI Random Forest
Có RF, muốn cải thiện XGBoost
Nghi ngờ mẫu trực quan CNN 1D
Swing trading, ngữ cảnh dài LSTM hoặc GRU
Multi-asset, features phức tạp Transformer
Còn nghi ngờ Random Forest (luôn)

Pipeline tiêu chuẩn cho mọi mô hình

  1. Thu thập dữ liệu qua mt5.copy_rates_from_pos()
  2. Feature engineering — lagged returns, indicators, context
  3. Split thời gian 80/20 — không shuffle
  4. Train trên train, validate trên test holdout
  5. Xuất sang ONNX với exporter framework
  6. Validate với onnxruntime trong Python
  7. Nhúng trong EA qua #resource + OnnxCreateFromBuffer
  8. Backtest trong MT5 Strategy Tester
  9. Demo trade 30+ ngày với risk management
  10. Live với stake tối thiểu, scaling dần

Nguyên tắc phổ quát:
1. Mô hình đơn giản hoạt động > phức tạp có thể hoạt động
2. Feature engineering đánh bại kiến trúc 9/10 lần
3. Validation theo thời gian là thiêng liêng
4. Backtest chuyên nghiệp dùng 6+ tháng out-of-sample
5. Quản lý rủi ro giết nhiều bot hơn mô hình kém

🚀 Để kiểm tra EA với ONNX, demo Deriv MT5 miễn phí ($10.000 ảo):

Mở Demo Deriv MT5 →

DM

Dan Machado

Founder IA Trader Pro · Chuyên gia AI giao dịch

⚠️ Tuyên bố từ chối: Nội dung giáo dục, không phải lời khuyên đầu tư. Giao dịch có rủi ro đáng kể. Mô hình AI không đảm bảo lợi nhuận. Luôn kiểm tra trên demo trước khi giao dịch thật. Bài viết chứa liên kết liên kết Deriv.