| Bài 3: ONNX trong MT5: Đưa mô hình AI vào Expert Advisor

Được viết bởi Đặng Trí Thanh vào ngày 06/04/2026 lúc 23:18 | 139 lượt xem

Bài 3: ONNX trong MT5: Đưa mô hình AI vào Expert Advisor

Năm 2026, Bot Auto Trade MT5 không chỉ dừng lại ở các chỉ báo kỹ thuật đơn thuần. Với sự hỗ trợ mạnh mẽ của định dạng ONNX, bạn có thể nạp trực tiếp các mô hình nơ-ron từ Python vào MT5.

Học viên tại DNT Academy sẽ được thực hành:
– Huấn luyện mô hình tại môi trường Python.
– Xuất file ONNX.
– Chạy suy luận (Inference) ngay trong EA để dự báo giá thời gian thực.

ONNX là gì và vì sao nó quan trọng với MT5?

ONNX (Open Neural Network Exchange) là định dạng mở để trao đổi mô hình học máy giữa các framework (PyTorch, TensorFlow…). Với ONNX, bạn huấn luyện mô hình AI bằng Python (thư viện mạnh) rồi nạp trực tiếp vào MT5 để chạy suy luận trong thời gian thực — kết hợp sức mạnh của AI với tốc độ của MT5.

Quy trình đưa mô hình AI vào EA

  1. Huấn luyện mô hình tại môi trường Python: thu thập dữ liệu, xây mô hình (vd LSTM, Random Forest), huấn luyện và đánh giá.
  2. Xuất file ONNX: chuyển mô hình đã huấn luyện thành file .onnx tiêu chuẩn.
  3. Chạy suy luận (Inference) ngay trong EA: EA đọc file ONNX, đưa dữ liệu giá vào, nhận dự báo và ra quyết định giao dịch thời gian thực.

Ví dụ mã giả quy trình Python → ONNX

# Python - huấn luyện và xuất ONNX
import torch
model = MyPriceModel()          # mô hình nơ-ron của bạn
torch.onnx.export(model, dummy_input, "model.onnx",
                  input_names=["features"], output_names=["pred"])
print("Đã xuất model.onnx - sẵn sàng nạp vào MT5")
// MQL5 - nạp mô hình ONNX trong EA
int handle = OnnxCreate("model.onnx", ONNX_DEFAULT);
// đưa features (giá, chỉ báo) vào, nhận dự báo
OnnxRun(handle, ONNX_NO_CONVERSION, features, prediction);

Lợi ích và lưu ý

  • Lợi ích: dự báo dựa trên nhiều biến số cùng lúc, vượt xa chỉ báo kỹ thuật truyền thống.
  • Lưu ý: mô hình AI không phải “thần dược” — cần dữ liệu sạch, kiểm chứng ngoài mẫu và quản lý rủi ro chặt.

Kết luận

ONNX mở ra cánh cửa đưa AI vào bot MT5 một cách chuẩn hóa. Học viên tại DNT Academy sẽ được thực hành trọn quy trình từ huấn luyện đến suy luận trong EA.


🧠 ONNX Là Gì? Vì Sao Nó Quan Trọng Với MT5?

ONNX (Open Neural Network Exchange) là một định dạng mở để trao đổi mô hình học máy giữa các framework như PyTorch, TensorFlow, Scikit-learn. Nó đóng vai trò như một “ngôn ngữ trung gian” — bạn huấn luyện mô hình ở bất kỳ framework nào, rồi xuất ra file .onnx chuẩn để bất kỳ runtime nào chạy được.

Với MT5, ONNX mở ra một khả năng đột phá: đưa trí tuệ nhân tạo từ Python vào Expert Advisor. Thay vì chỉ dùng chỉ báo kỹ thuật, bot của bạn có thể chạy mô hình nơ-ron, Random Forest, Gradient Boosting… ngay trong quá trình giao dịch thời gian thực.

Vì sao ONNX quan trọng?

  • Huấn luyện mạnh mẽ ở Python: Python có hệ sinh thái ML khổng lồ (scikit-learn, PyTorch, TensorFlow).
  • Chạy nhanh ở MT5: EA chạy suy luận với tốc độ tick, không cần gọi API bên ngoài.
  • Tiêu chuẩn mở: Không bị khóa vào một framework cụ thể.
  • Triển khai linh hoạt: Một file .onnx dùng được trên nhiều nền tảng.

📋 Quy Trình Đưa Mô Hình AI Vào EA (Từng Bước)

Quy trình đầy đủ gồm 5 bước, từ dữ liệu đến suy luận trong EA:

  1. Thu thập dữ liệu: Lấy dữ liệu giá, khối lượng, chỉ báo từ MT5 hoặc nguồn ngoài.
  2. Tiền xử lý (Preprocessing): Làm sạch, chuẩn hóa, tạo đặc trưng.
  3. Huấn luyện mô hình: Dùng Python (LSTM, Random Forest, XGBoost…).
  4. Xuất file ONNX: Chuyển mô hình thành .onnx.
  5. Chạy suy luận trong EA: EA đọc file, đưa dữ liệu giá vào, nhận dự báo.
# [BƯỚC 3+4: HUẤN LUYỆN VÀ XUẤT ONNX - PYTHON]
import numpy as np
from sklearn.ensemble import RandomForestClassifier
import onnx
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType

# Giả lập dữ liệu huấn luyện (RSI, MA, Momentum)
X = np.random.rand(1000, 5).astype(np.float32)
y = (X.sum(axis=1) > 2.5).astype(np.int64)

# Huấn luyện mô hình
model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)

# Xuất file ONNX
initial_type = [("float_input", FloatTensorType([None, 5]))]
onnx_model = convert_sklearn(model, initial_types=initial_type)
with open("model.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())
print("Đã xuất model.onnx thành công!")

⚙️ Tải Mô Hình ONNX Trong MQL5 (ONNX Runtime)

MT5 cung cấp hàm OnnxCreate, OnnxSetInputShape, OnnxRun để tải và chạy mô hình ONNX trực tiếp trong EA:

// [MINH HỌA CHẠY ONNX TRONG EA - MQL5]
#property version "1.0"

long model_handle = INVALID_HANDLE;

int OnInit() {
    // Tải mô hình ONNX
    model_handle = OnnxCreate("model.onnx", 5); // 5 biến đầu vào
    if(model_handle == INVALID_HANDLE) {
        Print("Không tải được ONNX: ", GetLastError());
        return INIT_FAILED;
    }
    return INIT_SUCCEEDED;
}

void OnTick() {
    // Chuẩn bị dữ liệu đầu vào (giả lập 5 feature)
    double features[5] = {14.2, 55.0, 1.03, 0.7, 0.4};
    double output[1];
    // Chạy suy luận
    if(OnnxRun(model_handle, ONNX_DEBUG_LOGS, features, output) == true) {
        if(output[0] > 0.5) {
            Print("Mô hình dự báo TĂNG - cân nhắc BUY");
        } else {
            Print("Mô hình dự báo GIẢM - cân nhắc SELL");
        }
    }
}

void OnDeinit(const int reason) {
    OnnxRelease(model_handle); // Giải phóng bộ nhớ
}

📊 Lợi Ích Của Mô Hình AI So Với Chỉ Báo Kỹ Thuật

Tiêu chíChỉ báo kỹ thuậtMô hình AI (ONNX)
Số biến phân tích1-2 chỉ báoNhiều feature cùng lúc
Phi tuyến tínhKhôngCó (học quan hệ phức tạp)
Thích nghiCố địnhHọc từ dữ liệu
Tốc độ chạyNhanhNhanh (ONNX Runtime)
Độ phức tạp triển khaiThấpCao hơn (cần quy trình ML)

⚠️ Lưu Ý Quan Trọng: AI Không Phải “Thần Dược”

Nhiều người kỳ vọng mô hình AI sẽ tự động sinh lời. Đây là sai lầm nguy hiểm. AI chỉ là công cụ, và nó đòi hỏi:

  • Dữ liệu sạch: Dữ liệu rác → mô hình rác (garbage in, garbage out).
  • Kiểm chứng ngoài mẫu: Phải test trên dữ liệu không dùng để huấn luyện.
  • Chống overfitting: Mô hình quá khớp quá khứ sẽ thất bại trong tương lai.
  • Quản lý rủi ro: Mô hình dự báo chỉ là xác suất, không bao giờ chắc chắn 100%.
⚠️ Cảnh báo: Mô hình AI được huấn luyện trên dữ liệu quá khứ có thể không hiệu quả khi thị trường thay đổi. Luôn cập nhật và kiểm chứng định kỳ.

🧪 Quy Trình Kiểm Chứng Mô Hình Trước Khi Đưa Vào EA

  1. Chia dữ liệu: Train / Validation / Test theo tỷ lệ 70/15/15.
  2. Backtest với mô hình: Chạy EA trên dữ liệu lịch sử (Every Tick).
  3. Kiểm chứng out-of-sample: Chạy trên giai đoạn không dùng để huấn luyện.
  4. So sánh với baseline: Mô hình có tốt hơn chỉ báo đơn giản không?
  5. Demo thực tế: Chạy tài khoản demo 1-2 tháng trước khi dùng vốn thật.

❓ Câu Hỏi Thường Gặp (FAQ)

Hỏi: Tôi có cần giỏi machine learning để dùng ONNX không?
Cần kiến thức cơ bản về ML. Bạn có thể bắt đầu với mô hình đơn giản như Logistic Regression, Random Forest.

Hỏi: MT5 có hỗ trợ ONNX sẵn không?
Có, từ bản mới nhất. Dùng hàm OnnxCreate, OnnxRun trong MQL5.

Hỏi: File ONNX nặng bao nhiêu?
Tùy mô hình. Mô hình nhỏ vài chục KB, mô hình lớn (LSTM sâu) vài MB.

Hỏi: Mô hình AI có luôn thắng không?
Không. AI chỉ tăng xác suất thắng nếu có edge thật. Luôn kết hợp quản lý rủi ro.

Hỏi: Tôi học ONNX + MT5 ở đâu?
Tại khóa học Algo Trading của Học viện DNT Academy — thực hành trọn quy trình từ huấn luyện đến suy luận.


🚀 Đưa AI vào bot MT5 của bạn: Tham gia Học viện DNT Academy để được thực hành trọn quy trình ONNX.


📚 Các Loại Mô Hình AI Bạn Có Thể Đưa Vào MT5

ONNX không giới hạn bạn ở một loại mô hình. Bạn có thể đưa nhiều loại AI vào EA:

Loại mô hìnhĐặc điểmỨng dụng trong trading
Logistic RegressionĐơn giản, dễ diễn giảiDự báo xác suất tăng/giảm
Random ForestMạnh, chống overfittingPhân loại tín hiệu, chọn feature
Gradient Boosting (XGBoost)Hiệu suất caoDự báo xu hướng, scoring
LSTM (RNN)Học chuỗi thời gianDự báo giá theo lịch sử
MLP (Neural Network)Phi tuyến tínhKết hợp nhiều feature

🧪 Ví Dụ: Huấn Luyện Mô Hình XGBoost Và Xuất ONNX

# [HUẤN LUYỆN XGBOOST VÀ XUẤT ONNX]
import numpy as np
import xgboost as xgb
import onnx
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType

# Dữ liệu giả: 8 feature (chỉ báo kỹ thuật)
X = np.random.randn(2000, 8).astype(np.float32)
y = (X[:, 0] + X[:, 3] > 0).astype(np.int64)

# Huấn luyện
model = xgb.XGBClassifier(n_estimators=200, max_depth=4)
model.fit(X, y)

# Xuất ONNX
initial_type = [("float_input", FloatTensorType([None, 8]))]
onnx_model = convert_sklearn(model, initial_types=initial_type)
with open("xgboost_model.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())
print("Đã xuất xgboost_model.onnx")

🔍 Chuẩn Hóa Dữ Liệu: Điều Kiện Tiên Quyết

Một điểm quan trọng khi đưa AI vào EA: dữ liệu đầu vào phải được chuẩn hóa giống lúc huấn luyện. Nếu bạn scale dữ liệu bằng StandardScaler trong Python, EA phải áp dụng cùng tham số scale.

⚠️ Cảnh báo: Sai lầm phổ biến nhất là quên áp dụng cùng bước tiền xử lý trong EA. Dữ liệu không được chuẩn hóa đúng cách sẽ làm mô hình dự báo sai hoàn toàn.
# [LƯU THAM SỐ CHUẨN HÓA ĐỂ EA DÙNG LẠI]
import json
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Lưu mean và std để EA áp dụng tương tự
params = {
    "mean": scaler.mean_.tolist(),
    "std": scaler.scale_.tolist(),
}
with open("scaler_params.json", "w") as f:
    json.dump(params, f)
print("Đã lưu tham số chuẩn hóa:", params)

⚙️ Cấu Trúc EA Hoàn Chỉnh Với AI

Một EA tích hợp ONNX hoàn chỉnh thường có cấu trúc:

  1. OnInit: Tải mô hình ONNX, đọc tham số chuẩn hóa.
  2. OnTick: Thu thập dữ liệu giá, tính feature, chuẩn hóa.
  3. Inference: Chạy mô hình, nhận xác suất dự báo.
  4. Quyết định: Kết hợp dự báo + quản lý rủi ro để ra lệnh.
  5. Quản lý vị thế: Trailing stop, đóng lệnh theo điều kiện.

📊 Đánh Giá Mô Hình Trước Khi Triển Khai

Đừng đưa mô hình vào EA ngay. Hãy đánh giá nghiêm túc:

  • Accuracy: Độ chính xác tổng thể (nhưng đừng tin tuyệt đối nếu dữ liệu mất cân bằng).
  • Precision/Recall: Độ chính xác khi dự báo tăng/giảm.
  • Confusion matrix: Bảng phân loại đúng/sai.
  • AUC-ROC: Khả năng phân biệt tăng/giảm.
  • Backtest thực tế: Chạy EA với mô hình trên dữ liệu lịch sử.
# [ĐÁNH GIÁ MÔ HÌNH NHANH]
from sklearn.metrics import accuracy_score, classification_report

y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

🔄 Cập Nhật Mô Hình Định Kỳ

Thị trường thay đổi liên tục. Mô hình AI cũng cần cập nhật định kỳ:

  • Theo dõi hiệu suất: So sánh dự báo với thực tế mỗi tuần.
  • Phát hiện suy giảm: Nếu accuracy giảm rõ rệt, cần retrain.
  • Retrain với dữ liệu mới: Thêm dữ liệu mới, huấn luyện lại, xuất ONNX mới.
  • Triển khai an toàn: Thay file ONNX trong giờ ít giao dịch.
✅ Mẹo: Giữ lịch sử các phiên bản mô hình. Nếu bản mới kém hơn, bạn có thể quay lại bản cũ dễ dàng.

❓ Câu Hỏi Thường Gặp (FAQ)

Hỏi: ONNX có hỗ trợ mọi loại mô hình không?
Hầu hết các mô hình phổ biến (sklearn, XGBoost, PyTorch, TensorFlow). Một số mô hình đặc thù có thể cần chuyển đổi thủ công.

Hỏi: Chạy ONNX trong MT5 có chậm không?
Rất nhanh. ONNX Runtime tối ưu cho suy luận — chỉ vài mili-giây cho mô hình nhỏ.

Hỏi: Tôi có cần dữ liệu lớn để huấn luyện không?
Mô hình đơn giản cần ít dữ liệu. Mô hình sâu (LSTM) cần nhiều hơn. Bắt đầu với mô hình đơn giản.

Hỏi: Mô hình AI có thể thay thế quản lý rủi ro không?
Không bao giờ. AI chỉ dự báo, quản lý rủi ro vẫn là bắt buộc.

Hỏi: Tôi học ONNX + MT5 ở đâu?
Tại Học viện DNT Academy — thực hành trọn quy trình từ huấn luyện đến suy luận trong EA.


🚀 Đưa AI vào bot MT5 với ONNX: Tham gia Học viện DNT Academy ngay hôm nay.


🧠 ONNX Runtime: Cách MT5 Chạy Mô Hình AI

ONNX Runtime là công cụ thực thi (runtime) cho phép MT5 chạy các mô hình ONNX một cách tối ưu. Nó được tích hợp sẵn trong MT5 hiện đại, giúp bạn không cần cài thêm thư viện bên ngoài.

Quy trình suy luận trong MT5:

  1. OnnxCreate: Tải file .onnx vào bộ nhớ, tạo handle.
  2. OnnxSetInputShape: Định nghĩa hình dạng dữ liệu đầu vào.
  3. OnnxSetOutputShape: Định nghĩa hình dạng đầu ra.
  4. OnnxRun: Đưa dữ liệu vào, nhận kết quả dự báo.
  5. OnnxRelease: Giải phóng tài nguyên khi xong.
// [QUY TRÌNH ONNX ĐẦY ĐỦ TRONG MQL5]
int OnInit() {
    // 1. Tạo mô hình
    m_onnx = OnnxCreate("ai_model.onnx", ONNX_DEBUG_LOGS);
    if(m_onnx == INVALID_HANDLE) {
        Print("Lỗi tạo ONNX: ", GetLastError());
        return INIT_FAILED;
    }
    // 2. Định dạng đầu vào: 6 feature, batch 1
    if(!OnnxSetInputShape(m_onnx, 0, {1, 6})) {
        Print("Lỗi input shape");
        return INIT_FAILED;
    }
    // 3. Định dạng đầu ra: 1 giá trị (xác suất)
    if(!OnnxSetOutputShape(m_onnx, 0, {1, 1})) {
        Print("Lỗi output shape");
        return INIT_FAILED;
    }
    return INIT_SUCCEEDED;
}

📊 Tạo Feature Cho Mô Hình AI Trong EA

Mô hình AI cần feature đầu vào — tương tự như Feature Engineering trong Python. Trong EA, bạn tính các feature này từ dữ liệu giá:

// [TÍNH FEATURE TRONG EA ĐỂ ĐƯA VÀO AI]
void PrepareFeatures(double &features[]) {
    // Feature 1: RSI(14)
    double rsi[1];
    CopyBuffer(HandleRSI, 0, 0, 1, rsi);
    features[0] = rsi[0];

    // Feature 2: MACD histogram
    double macd[1], signal[1];
    CopyBuffer(HandleMACD, 0, 0, 1, macd);
    CopyBuffer(HandleMACD, 1, 0, 1, signal);
    features[1] = macd[0] - signal[0];

    // Feature 3: Khoảng cách giá với MA
    double ma[1];
    CopyBuffer(HandleMA, 0, 0, 1, ma);
    double close = iClose(_Symbol, _Period, 0);
    features[2] = (close - ma[0]) / _Point;

    // Feature 4-6: Các feature khác...
}

Quan trọng: thứ tự và cách chuẩn hóa feature trong EA phải khớp với lúc huấn luyện. Đây là lỗi phổ biến khiến mô hình dự báo sai.

⚙️ Kết Hợp Dự Báo AI Với Quản Lý Rủi Ro

Dự báo AI chỉ là một phần của quyết định. Một EA chuyên nghiệp kết hợp:

  • Xác suất từ AI: Ví dụ 0.7 nghĩa là 70% khả năng tăng.
  • Bộ lọc rủi ro: Spread, tin tức, khối lượng.
  • Quản lý vị thế: Khối lượng theo rủi ro, SL/TP hợp lý.
  • Kill switch: Dừng khi drawdown vượt ngưỡng.
// [KẾT HỢP AI + QUẢN LÝ RỦI RO]
void OnTick() {
    double features[6];
    PrepareFeatures(features);

    double prob[1];
    if(!OnnxRun(m_onnx, ONNX_DEBUG_LOGS, features, prob)) {
        return; // Lỗi suy luận, không giao dịch
    }

    // Chỉ giao dịch khi xác suất cao VÀ rủi ro chấp nhận được
    if(prob[0] > 0.65 && IsRiskOK()) {
        double lot = CalculateLot(); // Theo quản lý vốn
        OpenTrade(prob[0] > 0.5 ? ORDER_BUY : ORDER_SELL, lot);
    }
}

bool IsRiskOK() {
    // Kiểm tra spread, drawdown, giờ giao dịch...
    return true;
}

📉 Những Sai Lầm Khi Tích Hợp AI Vào EA

Sai lầmHậu quảCách tránh
Quên chuẩn hóa dữ liệuDự báo sai hoàn toànÁp dụng cùng scaler
Feature thứ tự saiDự báo saiĐảm bảo thứ tự feature khớp
Không kiểm chứng out-of-sampleOverfit, thua lỗLuôn test trên dữ liệu mới
Tin tuyệt đối vào AIThiếu quản lý rủi roKết hợp bộ lọc rủi ro
Không cập nhật mô hìnhHiệu suất suy giảmRetrain định kỳ

🧪 Quy Trình Đưa Mô Hình Vào Thực Chiến

  1. Huấn luyện và đánh giá: Python, kiểm chứng kỹ.
  2. Xuất ONNX + tham số scaler: Lưu cùng nhau.
  3. Tích hợp EA: Code tải mô hình, tính feature.
  4. Backtest với EA: Every Tick, kiểm tra hoạt động.
  5. Demo 1-2 tháng: Kiểm chứng thực tế.
  6. Chạy thật với vốn nhỏ: Tăng dần khi tin cậy.

❓ Câu Hỏi Thường Gặp (FAQ)

Hỏi: MT5 nào hỗ trợ ONNX?
Các bản MT5 mới nhất (build 4xxx trở lên). Kiểm tra tài liệu MT5 để chắc chắn.

Hỏi: Mô hình AI có cần GPU không?
Không. Mô hình nhỏ chạy trên CPU đủ nhanh cho giao dịch.

Hỏi: Tôi có thể dùng AI cho mọi chiến lược không?
Được, nhưng AI có giá trị nhất khi có đủ dữ liệu và feature có ý nghĩa. Đừng ép AI vào mọi thứ.

Hỏi: Tôi học ONNX + MT5 ở đâu?
Tại Học viện DNT Academy — thực hành trọn quy trình.


🚀 Đưa AI vào bot MT5 với ONNX: Tham gia Học viện DNT Academy ngay hôm nay.


📊 So Sánh: Mô Hình AI Trong EA vs. Gọi API Bên Ngoài

Có hai cách để bot dùng AI: chạy ONNX trong EA hoặc gọi API ML bên ngoài. Mỗi cách có ưu nhược điểm:

Tiêu chíONNX trong EAAPI bên ngoài
Tốc độCực nhanh (nội bộ)Phụ thuộc mạng
Độ trễMili-giâyVài chục ms trở lên
Độc lậpChạy ngay trong MT5Cần server riêng
Cập nhật mô hìnhThay file .onnxCập nhật server
Chi phíMiễn phíCó thể tốn phí API
Phù hợpScalping, HFTMô hình lớn, cập nhật thường xuyên

Với bot giao dịch cần tốc độ, ONNX trong EA là lựa chọn tối ưu. API bên ngoài phù hợp khi mô hình quá lớn hoặc cần cập nhật liên tục.

🔬 Tiền Xử Lý Dữ Liệu: Yếu Tố Quyết Định Độ Chính Xác

Chất lượng dữ liệu đầu vào quyết định chất lượng dự báo. Quy trình tiền xử lý chuẩn:

  1. Làm sạch: Loại bỏ giá trị thiếu, ngoại lệ (outlier).
  2. Chuẩn hóa: Scale về cùng dải (StandardScaler, MinMaxScaler).
  3. Xử lý nhiễu: Làm mịn dữ liệu giá nếu cần.
  4. Tạo feature: Tính các chỉ báo cần thiết.
  5. Đồng bộ: Cùng thứ tự và cùng chuẩn với lúc huấn luyện.
⚠️ Lưu ý quan trọng: Mọi bước tiền xử lý ở Python phải được tái hiện chính xác trong EA. Sai một bước, mô hình dự báo sai toàn bộ.

🧠 LSTM Cho Dự Báo Chuỗi Thời Gian

LSTM (Long Short-Term Memory) là mô hình mạnh cho dữ liệu chuỗi thời gian như giá:

# [HUẤN LUYỆN LSTM VÀ XUẤT ONNX - PYTHON]
import numpy as np
import torch
import torch.nn as nn
import onnx

class PriceLSTM(nn.Module):
    def __init__(self, input_size=6, hidden=64, output=1):
        super().__init__()
        self.lstm = nn.LSTM(input_size, hidden, batch_first=True)
        self.fc = nn.Linear(hidden, output)

    def forward(self, x):
        out, _ = self.lstm(x)
        return self.fc(out[:, -1, :])

# Khởi tạo và xuất ONNX
model = PriceLSTM()
dummy = torch.randn(1, 10, 6)  # batch 1, 10 bước, 6 feature
torch.onnx.export(model, dummy, "lstm_price.onnx",
                  input_names=["features"], output_names=["prediction"])
print("Đã xuất lstm_price.onnx")

LSTM học được quan hệ theo thời gian — phù hợp khi lịch sử giá gần nhất ảnh hưởng đến dự báo.

⚙️ Quản Lý Phiên Bản Mô Hình (Model Versioning)

Khi cập nhật mô hình, hãy quản lý phiên bản cẩn thận:

  • Đặt tên có phiên bản: model_v1.onnx, model_v2.onnx.
  • Ghi log thay đổi: Ngày, dữ liệu, tham số, kết quả.
  • Lưu mô hình cũ: Đề phòng phải quay lại.
  • Kiểm tra trước khi deploy: Backtest với mô hình mới.
# [QUẢN LÝ PHIÊN BẢN MÔ HÌNH]
import os, json

def deploy_model(model_path, version):
    # Sao lưu bản hiện tại
    if os.path.exists("active_model.onnx"):
        os.rename("active_model.onnx", f"backup_v{version-1}.onnx")
    # Triển khai bản mới
    os.replace(model_path, "active_model.onnx")
    # Ghi log
    log = {"version": version, "model": model_path, "date": "2026-08-14"}
    with open("model_log.json", "w") as f:
        json.dump(log, f, indent=2)
    print(f"Đã triển khai phiên bản {version}")

📊 Đo Lường Hiệu Suất Mô Hình Khi Chạy Thực Tế

Sau khi đưa vào thực chiến, hãy theo dõi hiệu suất liên tục:

  • Accuracy thực tế: Dự báo đúng bao nhiêu %?
  • So với backtest: Có chênh lệch lớn không?
  • Phát hiện suy giảm: Accuracy giảm → retrain.
  • Track record: Ghi lại mọi dự báo và kết quả.
# [THEO DÕI HIỆU SUẤT DỰ BÁO]
def track_prediction(prediction, actual_move):
    # Ghi dự báo và kết quả
    with open("predictions.csv", "a") as f:
        f.write(f"{prediction},{actual_move}n")

def accuracy_recent(lines=100):
    import csv
    rows = list(csv.reader(open("predictions.csv")))[-lines:]
    correct = sum(1 for p, a in rows if (float(p) > 0.5) == (float(a) > 0))
    print(f"Accuracy {len(rows)} dự báo gần nhất: {correct/len(rows):.1%}")

❓ Câu Hỏi Thường Gặp (FAQ)

Hỏi: Tôi nên chọn ONNX trong EA hay API?
Nếu cần tốc độ (scalping) → ONNX. Nếu mô hình lớn hoặc cập nhật thường xuyên → API. Bắt đầu với ONNX cho đơn giản.

Hỏi: Mô hình AI có cần retrain thường xuyên không?
Tùy độ ổn định thị trường. Theo dõi accuracy thực tế, retrain khi suy giảm.

Hỏi: Tôi có cần dữ liệu tick lịch sử để huấn luyện không?
Dữ liệu M1/H1 đủ cho mô hình dự báo xu hướng. Dữ liệu tick cần cho scalping chính xác.

Hỏi: Tôi học ONNX + MT5 ở đâu?
Tại Học viện DNT Academy — thực hành trọn quy trình.


🚀 Đưa AI vào bot MT5 với ONNX: Tham gia Học viện DNT Academy ngay hôm nay.

Đặng Trí Thanh

Đặng Trí Thanh

Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL Hướng Nghiệp Dữ Liệu
1.334 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Đặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.

Đội ngũ hỗ trợ

Đặng Trí Thanh
Đặng Trí Thanh
Giám đốc Công nghệ DNT Digital
Zalo 0934145100
Mộng Cầm
Mộng Cầm
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909257
Khánh Linh
Khánh Linh
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909582