One command. Zero clicks. Mọi EA đều được test, xếp hạng, và tối ưu hoàn toàn tự động.
MetaTrader 5 là nền tảng trading mạnh nhất thế giới — nhưng nó bị khoá trong GUI: phải click, kéo thả, chờ đợi, copy kết quả bằng tay.
Nếu bạn muốn:
- Test 70 Expert Advisors × 5 symbols × 4 timeframes = 1,400 backtest → bạn cần ~700 giờ nếu làm tay
- Tìm bộ parameter tối ưu cho 1 EA → Genetic Optimization mất hàng giờ click
Pipeline này giải quyết 100% bằng 1 lệnh terminal.
Quan trọng hơn: nó biến MT5 thành một service có thể gọi từ bất kỳ ngôn ngữ lập trình nào — mở ra cánh cửa để AI Agent tự backtest, tự tối ưu, tự tìm best set.
┌──────────────────────────────────────────────────────────────┐
│ AGENTIC IDE LAYER │
│ Antigravity · Claude Code · Cursor · Gemini · Codex │
│ │ │
│ ▼ gọi lệnh ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ MT5-CLI Bridge (PowerShell Pipeline) │ │
│ │ backtest_runner.ps1 → ini_generator → parser │ │
│ └─────────────┬───────────────────────────┬───────────┘ │
│ │ │ │
│ ┌────────▼────────┐ ┌────────▼────────┐ │
│ │ MetaEditor64 │ │ terminal64.exe │ │
│ │ Compile MQ5 │ │ Strategy Tester │ │
│ └─────────────────┘ └──────────────────┘ │
│ │
│ ▼ output ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ HTML Report → Parser → CSV → Ranker → Best Set │ │
│ └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
Hiện tại MetaTrader 5 không có API chính thức để gọi từ Python/Node.js. Project này tạo ra một lớp trung gian (CLI Bridge) để:
| Trước (Manual) | Sau (Agentic) |
|---|---|
| Mở MT5 → click Strategy Tester → chọn EA → chờ | .\backtest_runner.ps1 -EAName "X" -Symbol "XAUUSDc" |
| Copy kết quả bằng tay vào Excel | Tự parse HTML report → CSV → ranking |
| Test 1 EA/lần, mất 30 phút/EA | Batch test 70 EAs × N configs, xong ngủ |
| Tối ưu parameter bằng cảm tính | Genetic Optimization + scoring formula |
- AI Agent (Claude Code/Antigravity) nhận yêu cầu: "Tìm EA tốt nhất cho XAUUSD M15"
- Agent gọi
backtest_runner.ps1 -Mode Batch→ test tất cả EAs - Agent đọc
all_results.csv→ phân tích → chọn top 3 - Agent gọi
backtest_runner.ps1 -Mode Optimize→ tìm best params - Agent xuất
.setfile tối ưu → sẵn sàng chạy live
Không cần mở MT5 GUI. Không cần click. AI tự làm hết.
- MetaTrader 5 đã cài và đăng nhập (Exness, ICMarkets, v.v.)
- PowerShell 5.1+ (Windows có sẵn)
.\backtest_runner.ps1 -EAName "PhoenixDCAPro" -Symbol "XAUUSDc" -TF "M15".\backtest_runner.ps1 -Mode Batch -Symbols "XAUUSDc,EURUSDc" -TFs "M5,M15,H1".\backtest_runner.ps1 -EAName "PhoenixDCAPro" -Symbol "XAUUSDc" -TF "M15" -Mode OptimizePipeline tự động: Compile → Tắt MT5 → Launch config → Chờ test xong → Parse report → Xếp hạng
Mỗi EA được chấm điểm bằng công thức risk-adjusted:
| Thành phần | Đo lường | Ý nghĩa |
|---|---|---|
| Recovery Factor | Net Profit ÷ Max Drawdown | Lợi nhuận trên mỗi đơn vị rủi ro |
| √(Total Trades) | Mẫu thống kê | Phạt EA chỉ có 5 lệnh may mắn |
| Profit Factor | Gross Profit ÷ Gross Loss | Tỷ lệ thắng/thua tổng thể |
Công thức này cân bằng 3 trụ cột của quant: Profitability × Risk Management × Statistical Robustness.
Pipeline tự phát hiện khi EA 0 trades (chạy cả tháng mà không mở lệnh) và tự động:
- 📖 Đọc Tester logs + Agent logs của MT5
- 🔍 Phân tích nguyên nhân: symbol sai, init fail, params quá strict
- 💡 Đề xuất fix: đổi timeframe, chỉnh tham số, hoặc review code
⚠️ ZERO TRADES DETECTED — Analyzing logs...
────────────────────────────────────────────
[TESTER LOG] symbol XAUUSD not exist
📋 DIAGNOSIS: Symbol phải dùng suffix broker → XAUUSDc
────────────────────────────────────────────
ex5-backtest/
├── backtest_runner.ps1 # 🎯 Orchestrator chính
├── ini_generator.ps1 # 📝 Tạo config .ini cho MT5 Strategy Tester
├── report_parser.ps1 # 📊 Parse HTML report → metrics
├── rank_results.ps1 # 🏆 Xếp hạng bằng scoring formula
├── batch_compile.ps1 # 🔧 Compile hàng loạt MQ5
├── EAs/ # 40+ Expert Advisors (DCA, Grid, Scalper, Trend)
├── Indicators/ # 10+ Custom indicators (Channels, Ichimoku, ICT)
├── Others/ # 15+ EAs thử nghiệm (CCBSN, PropFirm, SemiAuto)
└── Utilities/ # Tools (AutoAttach, Position Sizer)
| Param | Default | Mô tả |
|---|---|---|
-EAName |
— | Tên EA (không cần .mq5) |
-Symbol |
XAUUSD |
Dùng suffix broker! Exness: XAUUSDc |
-TF |
M5 |
M1 M5 M15 M30 H1 H4 D1 |
-Mode |
Single |
Single · Batch · Optimize |
-From / -To |
2024.01.01 → 12.31 |
Khoảng thời gian backtest |
-Deposit |
10000 |
Vốn ban đầu (USD) |
-Model |
OneMinOHLC |
EveryTick · OneMinOHLC · OpenOnly |
| Vấn đề | Giải pháp |
|---|---|
| Symbol not found | Dùng suffix broker: XAUUSDc (Exness), XAUUSD.a (ICMarkets) |
| MT5 đang mở | Pipeline tự tắt MT5 trước khi chạy config |
| Report không tìm thấy | Reports lưu ở AppData\MetaQuotes\Terminal\, không phải Program Files |
| 0 trades | Pipeline tự phân tích logs → đề xuất fix |
- ✅ Headless CLI Backtest (Compile → Test → Parse → Rank)
- ✅ Genetic Optimization mode
- ✅ Zero-Trade Detection + Log Analysis
- 🔜 Python wrapper (
mt5_bridge.py) — gọi pipeline từ Python/Jupyter - 🔜 MCP Server — expose pipeline cho AI Agents (Antigravity, Claude Code)
- 🔜 Walk-Forward Analysis — test tự động out-of-sample
- 🔜 Monte Carlo simulation — stress-test equity curve
- 🔜 Auto-deploy best EA lên live account
MIT — free cho cả mục đích cá nhân và thương mại.
Phạm Phú Nguyễn Hưng — Quantitative Trader & AI Automation Engineer
🌐 comarai.com · Building terminal-native trading infrastructure
"Mình không muốn click 1000 lần để test 1000 EA. Mình muốn gõ 1 lệnh rồi đi ngủ."
Bạn muốn trò chuyện về quant trading, AI agents, hoặc MT5 automation?
📧 hungphamphunguyen@gmail.com · GitHub