Skip to content

hungpixi/ex5-backtest

Repository files navigation

🤖 MT5 Auto-Backtest Pipeline

Biến MT5 thành một "API" mà bất kỳ AI Agent nào cũng gọi được

PowerShell MetaTrader 5 License: MIT Agentic AI

One command. Zero clicks. Mọi EA đều được test, xếp hạng, và tối ưu hoàn toàn tự động.


🧠 Tại Sao Cần Project Này?

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.


🔮 Tầm Nhìn: MT5 × Agentic AI

┌──────────────────────────────────────────────────────────────┐
│                    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

Kịch bản tương lai:

  1. AI Agent (Claude Code/Antigravity) nhận yêu cầu: "Tìm EA tốt nhất cho XAUUSD M15"
  2. Agent gọi backtest_runner.ps1 -Mode Batch → test tất cả EAs
  3. Agent đọc all_results.csv → phân tích → chọn top 3
  4. Agent gọi backtest_runner.ps1 -Mode Optimize → tìm best params
  5. Agent xuất .set file 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.


🚀 Bắt Đầu Trong 30 Giây

Yêu cầu

  • MetaTrader 5 đã cài và đăng nhập (Exness, ICMarkets, v.v.)
  • PowerShell 5.1+ (Windows có sẵn)

1. Backtest Một EA

.\backtest_runner.ps1 -EAName "PhoenixDCAPro" -Symbol "XAUUSDc" -TF "M15"

2. Batch Test Tất Cả EAs

.\backtest_runner.ps1 -Mode Batch -Symbols "XAUUSDc,EURUSDc" -TFs "M5,M15,H1"

3. Tìm Parameter Tối Ưu (Genetic Algorithm)

.\backtest_runner.ps1 -EAName "PhoenixDCAPro" -Symbol "XAUUSDc" -TF "M15" -Mode Optimize

Pipeline tự động: Compile → Tắt MT5 → Launch config → Chờ test xong → Parse report → Xếp hạng


📊 Scoring Formula — Đánh Giá EA Như Quant

Mỗi EA được chấm điểm bằng công thức risk-adjusted:

$$Score = RecoveryFactor \times \sqrt{TotalTrades} \times ProfitFactor$$

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.


🛡️ Zero-Trade Detection

Pipeline tự phát hiện khi EA 0 trades (chạy cả tháng mà không mở lệnh) và tự động:

  1. 📖 Đọc Tester logs + Agent logs của MT5
  2. 🔍 Phân tích nguyên nhân: symbol sai, init fail, params quá strict
  3. 💡 Đề 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
────────────────────────────────────────────

📂 Cấu Trúc

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)

⚙️ Parameters

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

⚠️ Lưu Ý Quan Trọng

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

🗺️ Roadmap

  • ✅ 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

📜 License

MIT — free cho cả mục đích cá nhân và thương mại.


👤 Tác Giả

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

Releases

No releases published

Packages

 
 
 

Contributors