返回 MCP 目录
public公开dns本地运行

metatrader-mcp

自动化MetaTrader 5交易策略优化与文档生成系统

article

README

🚀 MetaTrader 5 MCP 服务器与 Distrobox 自动化

本项目提供了一套完全自动化的流程,用于运行、优化并记录 MetaTrader 5 (MT5) 专家顾问 (EA)。借助 Distrobox 容器、Flask REST API 以及 MCP 服务器,能高效完成相关操作。

🚀 快速开始

1. Distrobox 容器设置

若要组装并进入 Distrobox 容器,可从项目根目录运行以下命令:

distrobox-assemble create --file src/mt5.ini -R
distrobox-enter mt5
  • 可查看 src/mt5.ini 了解完整的自动化 Distrobox 配置。
  • 在容器创建过程中,会自动完成以下操作:
    • 安装并配置 Wine、MT5、Python3、pip、Flask、MetaTrader5、pandas、jinja2、git 以及所有必需工具。
    • 自动启动 Flask API。
    • 初始化一个 git 仓库并提交所有文件。

2. Flask REST API

  • API 位于 src/mt5_flask_api.py
  • API 在主机上的地址为 http://localhost:5000(默认端口 5000 已发布;可参见 src/mt5.ini)。
  • 示例:从主机系统测试 API:
curl http://localhost:5000/optimization_status/some-id
  • 端点说明:
    • POST /optimize:启动优化运行。
    • GET /optimization_status/<id>:检查优化状态。
    • GET /optimization_results/<id>:获取结果。
    • POST /save_results:将结果保存为 HTML/Markdown/CSV/JSON。
  • 结果将保存到 ~/mt5-dev/result/manual/tuning/<EA_NAME>_tuning.html.md

3. MCP 服务器

  • 可查看 src/mt5-server.ts 了解 MCP 服务器实现。
  • 工具包含:
    • 交易操作(如 get_account_info、create_order 等)
    • 优化操作(如 run_optimization、get_optimization_status、get_optimization_results、save_optimization_results)

4. 使用示例

  • 启动容器(Distrobox 将执行所有设置并启动 Flask API)。
  • 使用 MCP 服务器触发优化和生成报告。
  • ~/mt5-dev/result/manual/tuning/ 中打开 HTML/Markdown 报告以获取清晰概述。

✨ 主要特性

  • MetaTrader 5 在 Wine/Distrobox 中:实现自动化设置和启动。
  • Flask REST API:可程序化优化 EA,提供运行、监控和保存结果的端点。
  • MCP 服务器:提供统一接口用于交易、优化和结果检索。
  • 自动文档生成:优化结果以 HTML 和 Markdown 报告的形式保存,每个 EA 都有独立记录。
  • Git 版本控制:从一开始就对所有代码和配置进行版本化。

📚 详细文档

工作目录与配置

默认情况下,所有日志、数据、结果和输出存储在 ~/mt5-dev 中,确保了便携性和一致性。
若要覆盖任何配置值以进行本地开发,请复制 src/mt5.inisrc/mt5-dev.ini 并按需自定义。
src/mt5-dev.ini 文件未被 Git 跟踪或推送。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端