- Rewrite README.md to focus on LLM-driven install setup - Simplify QUICKSTART.md to minimal LLM instruction guide - Rewrite CONFIG.md to remove platform-specific path examples - Delete platform-specific IDE docs (CLAUDE.md, CURSOR.md, VSCODE.md, WINDSURF.md) - Simplify REMOTE_AGENTS.md to remove Wine install details - Clean up TROUBLESHOOTING.md to remove platform install sections - Ignore .vscode/ and .codegraph/ directories - Untrack server.json (should remain tracked - already restored)
5.1 KiB
Troubleshooting
Run verify_setup first — it checks all paths and returns actionable hints.
Wine Not Found
macOS
Confirm /Applications/MetaTrader 5.app exists and has been launched at least once.
Check detection:
bash scripts/platform_detect.sh
If using CrossOver, confirm bottle is named MetaTrader5.
Linux
Install Wine 7.0+ and confirm on PATH:
# Debian/Ubuntu
sudo apt install wine64
# Fedora/RHEL
sudo dnf install wine
which wine64
Ask your LLM platform to install Wine if it's missing.
terminal64.exe Missing
MT5 unpacks terminal64.exe only after first launch.
- Open MetaTrader 5.app
- Wait for initialization (~30s)
- Quit
- Re-run setup:
bash scripts/setup.sh --yes
MCP Server Not Appearing
Claude Code
claude mcp list # should show MT5-Quant
claude mcp remove MT5-Quant # remove stale entry
claude mcp add MT5-Quant -- /absolute/path/to/mt5-quant
Must use absolute path — relative paths break when Claude starts from different directories.
Windsurf
- Check logs:
~/.windsurf/logs/ - Verify executable path is absolute
- Test manually:
./mt5-quant --help
Config Not Found
Set MT5_MCP_HOME or ensure config exists at:
- macOS:
~/.config/mt5-quant/config/mt5-quant.yaml - Project:
config/mt5-quant.yaml
Report Not Found After Backtest
-
Wrong symbol name — brokers use custom names (
XAUUSDm,XAUUSD.cent). Checkverify_setupor look in<terminal_dir>/history/. -
No history data — open MT5, open symbol chart, wait for history download.
-
EA crash at startup — check
<terminal_dir>/MQL5/Logs/forOnIniterrors. -
Date range has no trades — try wider range or confirm symbol was active.
Backtest Completes But Always Shows "journal-only" (No HTML Report)
Symptom: Every backtest produces status: completed_no_html and all deal profits are 0.0.
Cause: On Wine/macOS, ShutdownTerminal=1 does not cause terminal64.exe to exit after the
test completes. The tester agent (MetaTester 5) closes normally, but the terminal process stays alive
indefinitely. Without process exit, MT5 never writes the HTML report.
How the pipeline handles this: The inactivity watchdog detects that the tester log has stopped
growing (test done), waits 30 seconds polling for the HTML file, then kills terminal64.exe
unconditionally. If the HTML appears during the wait it is extracted; otherwise journal extraction
provides deal counts and final balance (but no per-deal P&L).
To maximise HTML report chances: Pass inactivity_kill_secs=120 explicitly (it is disabled by
default). With shutdown=true (default) this gives MT5 120s of quiet time + 30s of HTML-wait before
the kill.
launch_backtest(expert: "MyEA", shutdown: true, inactivity_kill_secs: 120)
Fallback data available from journal:
- Deal count, volume, prices, timestamps ✓
- Final balance (pips) ✓
- Per-deal profit/loss ✗ (always 0.0)
- Win rate, profit factor, Sharpe, drawdown ✗ (require HTML)
list_deals Returns 0 Filtered Results
Analytics tools filter deals with is_closed_trade() which checks entry = "out". If all deals
show entry = "in", the position tracker that infers direction from signed lot accumulation may
not have run (old binary in memory).
Fix: Restart the MCP server (restart Claude Code / your IDE) after installing a new binary.
The server process caches the binary in memory — install doesn't hot-reload it.
MetaEditor Compile Errors
Check <terminal_dir>/MQL5/Logs/:
- Missing
#include— copy dependencies intoExperts/alongside.mq5 - Stale
.ex5— delete old binary and recompile
No Deals in Backtest Report
- Use
model=0(every tick) — models 1/2 skip intra-bar movement, producing zero deals for grid/martingale EAs - Check
.setfile values appropriate for symbol/broker - Confirm
OnInit()returnsINIT_SUCCEEDED(MT5 Journal tab)
Analytics Tools: "No reports in DB" or "Report not found"
Analytics tools load deals from the SQLite database, not from CSV files on disk. Resolution order:
report_id(preferred) — ID fromlist_reportsreport_dir(legacy) — filesystem path, looks up matching DB entry- No args — uses the latest report automatically
Pre-DB reports (before this version) won't be found by report_dir. Re-run the backtest to get a DB-backed report.
deals.csv is no longer written automatically. Call export_deals_csv to generate one on demand:
export_deals_csv() # latest report → report_dir/deals.csv
export_deals_csv(report_id: "20260422_…") # specific report
export_deals_csv(output_path: "/tmp/out.csv") # custom path
Optimization Never Finishes
# From Claude:
tail_log(job_id=X, filter=errors)
get_optimization_status(job_id=X)
If MT5 crashed, edit <terminal_dir>/terminal.ini and remove line containing OptMode=-1, then retry.
Permission Denied
chmod +x /path/to/mt5-quant
Still Stuck?
- Run
verify_setupand share output - Check
tail_logfor errors - Review
<terminal_dir>/MQL5/Logs/for EA errors