Bài viết gần đây
-
Lộ Trình Học AI Trading Cho Người Đã Biết Bot Hedging (A–Z)
Tháng 9 8, 2026 -
Reinforcement Learning Cho Bot DCA: Dạy Bot Biết Khi Nào Nên Nín
Tháng 9 8, 2026
| 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
- 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á.
- Xuất file ONNX: chuyển mô hình đã huấn luyện thành file
.onnxtiêu chuẩn. - 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:
- 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.
- Tiền xử lý (Preprocessing): Làm sạch, chuẩn hóa, tạo đặc trưng.
- Huấn luyện mô hình: Dùng Python (LSTM, Random Forest, XGBoost…).
- Xuất file ONNX: Chuyển mô hình thành
.onnx. - 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ật | Mô hình AI (ONNX) |
|---|---|---|
| Số biến phân tích | 1-2 chỉ báo | Nhiều feature cùng lúc |
| Phi tuyến tính | Không | Có (học quan hệ phức tạp) |
| Thích nghi | Cố định | Học từ dữ liệu |
| Tốc độ chạy | Nhanh | Nhanh (ONNX Runtime) |
| Độ phức tạp triển khai | Thấp | Cao 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%.
🧪 Quy Trình Kiểm Chứng Mô Hình Trước Khi Đưa Vào EA
- Chia dữ liệu: Train / Validation / Test theo tỷ lệ 70/15/15.
- Backtest với mô hình: Chạy EA trên dữ liệu lịch sử (Every Tick).
- Kiểm chứng out-of-sample: Chạy trên giai đoạn không dùng để huấn luyện.
- So sánh với baseline: Mô hình có tốt hơn chỉ báo đơn giản không?
- 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ải | Dự báo xác suất tăng/giảm |
| Random Forest | Mạnh, chống overfitting | Phân loại tín hiệu, chọn feature |
| Gradient Boosting (XGBoost) | Hiệu suất cao | Dự báo xu hướng, scoring |
| LSTM (RNN) | Học chuỗi thời gian | Dự báo giá theo lịch sử |
| MLP (Neural Network) | Phi tuyến tính | Kế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.
# [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:
- OnInit: Tải mô hình ONNX, đọc tham số chuẩn hóa.
- OnTick: Thu thập dữ liệu giá, tính feature, chuẩn hóa.
- Inference: Chạy mô hình, nhận xác suất dự báo.
- Quyết định: Kết hợp dự báo + quản lý rủi ro để ra lệnh.
- 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.
❓ 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:
- OnnxCreate: Tải file .onnx vào bộ nhớ, tạo handle.
- OnnxSetInputShape: Định nghĩa hình dạng dữ liệu đầu vào.
- OnnxSetOutputShape: Định nghĩa hình dạng đầu ra.
- OnnxRun: Đưa dữ liệu vào, nhận kết quả dự báo.
- 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ầm | Hậu quả | Cách tránh |
|---|---|---|
| Quên chuẩn hóa dữ liệu | Dự báo sai hoàn toàn | Áp dụng cùng scaler |
| Feature thứ tự sai | Dự báo sai | Đảm bảo thứ tự feature khớp |
| Không kiểm chứng out-of-sample | Overfit, thua lỗ | Luôn test trên dữ liệu mới |
| Tin tuyệt đối vào AI | Thiếu quản lý rủi ro | Kết hợp bộ lọc rủi ro |
| Không cập nhật mô hình | Hiệu suất suy giảm | Retrain định kỳ |
🧪 Quy Trình Đưa Mô Hình Vào Thực Chiến
- Huấn luyện và đánh giá: Python, kiểm chứng kỹ.
- Xuất ONNX + tham số scaler: Lưu cùng nhau.
- Tích hợp EA: Code tải mô hình, tính feature.
- Backtest với EA: Every Tick, kiểm tra hoạt động.
- Demo 1-2 tháng: Kiểm chứng thực tế.
- 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 EA | API bên ngoài |
|---|---|---|
| Tốc độ | Cực nhanh (nội bộ) | Phụ thuộc mạng |
| Độ trễ | Mili-giây | Vài chục ms trở lên |
| Độc lập | Chạy ngay trong MT5 | Cần server riêng |
| Cập nhật mô hình | Thay file .onnx | Cập nhật server |
| Chi phí | Miễn phí | Có thể tốn phí API |
| Phù hợp | Scalping, HFT | Mô 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:
- Làm sạch: Loại bỏ giá trị thiếu, ngoại lệ (outlier).
- Chuẩn hóa: Scale về cùng dải (StandardScaler, MinMaxScaler).
- Xử lý nhiễu: Làm mịn dữ liệu giá nếu cần.
- Tạo feature: Tính các chỉ báo cần thiết.
- Đồng bộ: Cùng thứ tự và cùng chuẩn với lúc huấn luyện.
🧠 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
Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL Hướng Nghiệp Dữ LiệuĐặ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.