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
89 lines
3.6 KiB
XML
89 lines
3.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
|
|
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
|
|
<Worksheet ss:Name="Report">
|
|
<Table>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">Net profit</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1234.56</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">Profit factor</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1.25</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">Sharpe Ratio</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0.75</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">Total trades</Data></Cell>
|
|
<Cell><Data ss:Type="Number">150</Data></Cell>
|
|
</Row>
|
|
</Table>
|
|
</Worksheet>
|
|
<Worksheet ss:Name="Deals">
|
|
<Table>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">time</Data></Cell>
|
|
<Cell><Data ss:Type="String">type</Data></Cell>
|
|
<Cell><Data ss:Type="String">direction</Data></Cell>
|
|
<Cell><Data ss:Type="String">volume</Data></Cell>
|
|
<Cell><Data ss:Type="String">price</Data></Cell>
|
|
<Cell><Data ss:Type="String">sl</Data></Cell>
|
|
<Cell><Data ss:Type="String">tp</Data></Cell>
|
|
<Cell><Data ss:Type="String">profit</Data></Cell>
|
|
<Cell><Data ss:Type="String">balance</Data></Cell>
|
|
<Cell><Data ss:Type="String">comment</Data></Cell>
|
|
<Cell><Data ss:Type="String">order</Data></Cell>
|
|
<Cell><Data ss:Type="String">magic</Data></Cell>
|
|
<Cell><Data ss:Type="String">entry</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">2025.01.10 09:30:00</Data></Cell>
|
|
<Cell><Data ss:Type="String">buy</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0.01</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1915.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">15.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">10015.00</Data></Cell>
|
|
<Cell><Data ss:Type="String">Layer #1</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1001</Data></Cell>
|
|
<Cell><Data ss:Type="Number">12345</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">2025.01.15 10:45:00</Data></Cell>
|
|
<Cell><Data ss:Type="String">sell</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0.01</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1920.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">-10.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">10005.00</Data></Cell>
|
|
<Cell><Data ss:Type="String">Layer #1</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1002</Data></Cell>
|
|
<Cell><Data ss:Type="Number">12345</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
</Row>
|
|
<Row>
|
|
<Cell><Data ss:Type="String">2025.02.05 14:00:00</Data></Cell>
|
|
<Cell><Data ss:Type="String">sell</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0.01</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1945.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">0</Data></Cell>
|
|
<Cell><Data ss:Type="Number">-15.00</Data></Cell>
|
|
<Cell><Data ss:Type="Number">10020.00</Data></Cell>
|
|
<Cell><Data ss:Type="String">Layer #1</Data></Cell>
|
|
<Cell><Data ss:Type="Number">1005</Data></Cell>
|
|
<Cell><Data ss:Type="Number">12345</Data></Cell>
|
|
<Cell><Data ss:Type="String">out</Data></Cell>
|
|
</Row>
|
|
</Table>
|
|
</Worksheet>
|
|
</Workbook>
|