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
5.3 KiB
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.exefrom 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:
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
# 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
# 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:
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):
scp "${MAC_MT5}"/*.dll user@linux-server:~/mt5agents/
Step 5: Launch agents on Linux
# 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:
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:
- Mac firewall is allowing incoming connections on the agent port
- Linux server can reach Mac IP:
ping 192.168.1.100 - Port is open:
nc -zv 192.168.1.100 3000
Step 7: Configure MT5-Quant for remote agents
In config/MT5-Quant.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:
# 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.logfor 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.exeinstance uses ~200-400MB. - 8 agents = ~2-3GB RAM. Size agent count accordingly.