3f763827f4
MCP server exposing MetaTrader 5 strategy development tools to AI assistants (Claude, Cursor, etc.) on macOS (CrossOver) and Linux (Wine). Tools: - run_backtest: full pipeline — compile EA, clean cache, backtest, parse HTML/XML report, analyze deals → metrics.json + analysis.json - run_optimization: background genetic optimization with nohup/disown, UTF-16LE .set file handling, OptMode reset - compile_ea: MQL5 compilation via MetaEditor with auto-detected include/ directory sync - get_backtest_status / get_optimization_status: job polling - verify_environment: Wine/MT5 path validation Analytics: - extract.py: MT5 HTML and SpreadsheetML XML report parser - analyze.py: deal-level analysis (drawdown events, grid depth, loss sequences, monthly P&L) → analysis.json - optimize_parser.py: optimization result parser with convergence analysis Platform support: - macOS CrossOver (GUI mode, no Xvfb needed) - Linux Wine + Xvfb (headless, CI/CD compatible) - Auto-detection of Wine executable and MT5 terminal paths
188 lines
5.3 KiB
Markdown
188 lines
5.3 KiB
Markdown
# Remote Agent Setup (Linux Server)
|
|
|
|
MT5's distributed testing lets you farm optimization work across multiple machines. A Linux server running `metatester64.exe` via Wine connects to a Mac master over a local network.
|
|
|
|
**Throughput:** Each agent handles one pass at a time. 10 local + 16 remote = 26 agents. A 17,000-combination genetic optimization that takes 3 hours locally finishes in ~70 minutes.
|
|
|
|
---
|
|
|
|
## Requirements
|
|
|
|
**Mac (master)**
|
|
- MetaTrader 5 installed via CrossOver or Wine
|
|
- MT5-Quant configured and working for local backtests
|
|
- Port 3000 open in macOS firewall (or whichever port MT5 uses — check below)
|
|
|
|
**Linux server (agents)**
|
|
- Wine 7.0+ (or Wine Staging for better compatibility)
|
|
- `metatester64.exe` from an MT5 installation
|
|
- Access to the same MT5 data files (tick history) as the master — or let agents download on first run
|
|
|
|
---
|
|
|
|
## Step 1: Find the MT5 agent port on Mac
|
|
|
|
After running a local optimization, check the MT5 agent directories:
|
|
|
|
```bash
|
|
ls ~/Library/Application\ Support/MetaQuotes/*/drive_c/Program\ Files/MetaTrader\ 5/
|
|
```
|
|
|
|
You'll see directories like:
|
|
```
|
|
Agent-127.0.0.1-3000/ ← local agents (loopback)
|
|
Agent-127.0.0.1-3001/
|
|
Agent-0.0.0.0-3000/ ← remote listener (if enabled)
|
|
```
|
|
|
|
If you don't see `Agent-0.0.0.0-*` directories, enable remote agents in MT5:
|
|
**Tools → Options → Expert Advisors → Allow remote agents**
|
|
|
|
Note the port number (default: 3000).
|
|
|
|
---
|
|
|
|
## Step 2: Open firewall on Mac
|
|
|
|
```bash
|
|
# Check current firewall rules
|
|
sudo pfctl -s rules
|
|
|
|
# Allow incoming on agent port (example: 3000)
|
|
# Add to /etc/pf.conf or use macOS Firewall in System Settings
|
|
```
|
|
|
|
Or use macOS System Settings → Privacy & Security → Firewall → Firewall Options → Add MetaTrader 5.
|
|
|
|
---
|
|
|
|
## Step 3: Install Wine on Linux server
|
|
|
|
```bash
|
|
# Ubuntu/Debian
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt update
|
|
sudo apt install wine64 wine32
|
|
|
|
# Verify
|
|
wine64 --version
|
|
```
|
|
|
|
---
|
|
|
|
## Step 4: Copy `metatester64.exe` to Linux
|
|
|
|
From your Mac MT5 installation:
|
|
```bash
|
|
MAC_MT5="$HOME/Library/Application Support/MetaQuotes/Terminal/XXXXX/drive_c/Program Files/MetaTrader 5"
|
|
|
|
scp "${MAC_MT5}/metatester64.exe" user@linux-server:~/mt5agents/
|
|
scp "${MAC_MT5}/metaeditor64.exe" user@linux-server:~/mt5agents/ # not required for agents
|
|
```
|
|
|
|
Also copy the required DLLs (they're in the same directory):
|
|
```bash
|
|
scp "${MAC_MT5}"/*.dll user@linux-server:~/mt5agents/
|
|
```
|
|
|
|
---
|
|
|
|
## Step 5: Launch agents on Linux
|
|
|
|
```bash
|
|
# On the Linux server
|
|
cd ~/mt5agents/
|
|
|
|
# Replace MAC_IP with your Mac's local IP address
|
|
# Replace 8 with number of CPU cores - 1
|
|
wine64 metatester64.exe /server:192.168.1.100:3000 /agents:8
|
|
```
|
|
|
|
**What this does:**
|
|
- Connects to your Mac's MT5 master at `192.168.1.100:3000`
|
|
- Registers 8 worker agents
|
|
- MT5 on Mac will show 8 new agents in the agent manager
|
|
|
|
**To run as a background service:**
|
|
```bash
|
|
nohup wine64 metatester64.exe /server:192.168.1.100:3000 /agents:8 \
|
|
> ~/mt5agents/agents.log 2>&1 &
|
|
disown
|
|
```
|
|
|
|
---
|
|
|
|
## Step 6: Verify agents appear in MT5
|
|
|
|
On your Mac, open MT5:
|
|
**View → Strategy Tester → Agents tab**
|
|
|
|
You should see entries like:
|
|
```
|
|
Agent-192.168.1.200-3000 [Active]
|
|
Agent-192.168.1.200-3001 [Active]
|
|
...
|
|
```
|
|
|
|
If agents appear as `[Inactive]`, check:
|
|
1. Mac firewall is allowing incoming connections on the agent port
|
|
2. Linux server can reach Mac IP: `ping 192.168.1.100`
|
|
3. Port is open: `nc -zv 192.168.1.100 3000`
|
|
|
|
---
|
|
|
|
## Step 7: Configure MT5-Quant for remote agents
|
|
|
|
In `config/MT5-Quant.yaml`:
|
|
```yaml
|
|
optimization:
|
|
remote_agents:
|
|
enabled: true
|
|
check_agent_count: true # Verify remote agents are connected before launching
|
|
min_agents: 4 # Require at least N agents before optimizing
|
|
```
|
|
|
|
MT5-Quant will log the agent count before launching optimization:
|
|
```
|
|
[optimize] Local agents: 9, Remote agents: 8, Total: 17
|
|
[optimize] Estimated completion: ~105 minutes (17,640 passes at 17 agents)
|
|
```
|
|
|
|
---
|
|
|
|
## Tick Data Sync
|
|
|
|
Remote agents need tick history to replay trades. On first run, MT5 automatically downloads ticks from the broker for each symbol+period combination tested. This can take 10-30 minutes per symbol.
|
|
|
|
**Speed up first run:** Pre-populate the tick cache on the Linux server by copying from Mac:
|
|
|
|
```bash
|
|
# On Mac — find tick data location
|
|
find ~/Library/Application\ Support/MetaQuotes -name "*.bin" | grep "XAUUSD"
|
|
|
|
# Typical path:
|
|
# Terminal/XXXXX/drive_c/users/user/AppData/Roaming/MetaQuotes/Terminal/Common/Files/
|
|
|
|
scp -r "${TICK_DIR}" user@linux-server:~/mt5agents/ticks/
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
**Agents connect then immediately disconnect**
|
|
- MT5 version mismatch between `metatester64.exe` (from Mac) and the master. Use the exact same build number.
|
|
- Check `~/mt5agents/agents.log` for Wine errors.
|
|
|
|
**Agents show as connected but don't receive work**
|
|
- MT5 sometimes requires optimization to be started before assigning work to new agents.
|
|
- Start an optimization from the MT5 GUI first to "activate" remote agents, then cancel it and use MT5-Quant.
|
|
|
|
**Performance is slower with remote agents**
|
|
- Network latency between Mac and Linux server. Results are sent over TCP after each pass.
|
|
- Local gigabit network: negligible. WiFi or WAN: significant overhead. Use wired connection.
|
|
|
|
**Linux server runs out of memory**
|
|
- Each `metatester64.exe` instance uses ~200-400MB.
|
|
- 8 agents = ~2-3GB RAM. Size agent count accordingly.
|