返回市场
元交易器-MCP服务器

元交易器-MCP服务器

作者:ariadng123 星标更新:2025-10-09

项目介绍

技术文档摘要

<div align="center"> <h1>MetaTrader MCP Server</h1> </div> <br /> <div align="center">

PyPI 版本 Python 3.10+ 许可证: MIT

让AI助手通过自然语言为您交易

功能快速开始文档示例支持

MetaTrader MCP Server

</div> <br />

🌟 这是什么?

MetaTrader MCP Server 是一个连接AI助手(如Claude、ChatGPT)到MetaTrader 5交易平台的桥梁。您无需点击按钮,只需告诉您的AI助手要做什么:

"显示我的账户余额" "购买0.01手欧元/美元" "关闭所有盈利仓位"

AI会理解您的请求,并在MetaTrader 5上自动执行。

工作原理

您 → AI助手 → MCP服务器 → MetaTrader 5 → 您的交易

✨ 功能

  • 🗣️ 自然语言交易 - 使用简单的英语与AI交流以执行交易
  • 🤖 多AI支持 - 支持Claude Desktop、ChatGPT(通过Open WebUI)等
  • 📊 完整市场访问 - 获取实时价格、历史数据和符号信息
  • 💼 完整账户控制 - 查看余额、权益、保证金和交易统计
  • ⚡ 订单管理 - 用简单命令下单、修改和关闭订单
  • 🔒 安全 - 所有凭证都保存在您的机器上
  • 🌐 灵活接口 - 可作为MCP服务器或REST API使用
  • 📖 文档齐全 - 提供全面的指南和示例

🎯 这适合谁?

  • 交易者 - 想使用AI自动化交易
  • 开发者 - 构建交易机器人或分析工具
  • 分析师 - 需要快速访问市场数据
  • 任何人 - 对结合AI与金融市场感兴趣

⚠️ 重要免责声明

请仔细阅读:

金融工具交易涉及重大损失风险。此软件按原样提供,开发者不承担任何因使用此软件而导致的交易损失、收益或后果的责任。

通过使用此软件,您确认:

  • 您了解金融交易的风险
  • 您对通过此系统执行的所有交易负责
  • 您不会追究开发者的责任
  • 您自行承担使用此软件的风险

这不是财务建议。始终负责任地进行交易。


📋 先决条件

在开始之前,请确保您拥有:

  1. Python 3.10 或更高版本 - 下载地址
  2. MetaTrader 5终端 - 下载地址
  3. MT5交易账户 - 演示或真实账户凭据
    • 登录号码
    • 密码
    • 服务器名称(例如:"MetaQuotes-Demo")

🚀 快速开始

步骤 1:安装包

打开您的终端或命令提示符并运行:

pip install metatrader-mcp-server

步骤 2:启用算法交易

  1. 打开MetaTrader 5
  2. 转到工具选项
  3. 点击专家顾问标签
  4. 勾选允许算法交易
  5. 点击确定

步骤 3:选择您的接口

根据您的使用需求选择:

选项 A:与Claude Desktop一起使用(推荐初学者)

  1. 找到您的Claude Desktop配置文件:

    • Windows:%APPDATA%\Claude\claude_desktop_config.json
    • Mac:~/Library/Application Support/Claude/claude_desktop_config.json
  2. 打开文件并添加以下配置:

{
  "mcpServers": {
    "metatrader": {
      "command": "metatrader-mcp-server",
      "args": [
        "--login",    "YOUR_MT5_LOGIN",
        "--password", "YOUR_MT5_PASSWORD",
        "--server",   "YOUR_MT5_SERVER"
      ]
    }
  }
}

可选:指定自定义MT5终端路径

如果您的MT5终端安装在非标准位置,请添加--path参数:

{
  "mcpServers": {
    "metatrader": {
      "command": "metatrader-mcp-server",
      "args": [
        "--login",    "YOUR_MT5_LOGIN",
        "--password", "YOUR_MT5_PASSWORD",
        "--server",   "YOUR_MT5_SERVER",
        "--path",     "C:\\Program Files\\MetaTrader 5\\terminal64.exe"
      ]
    }
  }
}
  1. YOUR_MT5_LOGINYOUR_MT5_PASSWORDYOUR_MT5_SERVER替换为您的实际凭据

  2. 重新启动Claude Desktop

  3. 开始聊天!尝试:"我的账户余额是多少?"

选项 B:与Open WebUI一起使用(适用于ChatGPT和其他LLMs)

  1. 启动HTTP服务器:
metatrader-http-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER --host 0.0.0.0 --port 8000

可选:指定自定义MT5终端路径

如果您的MT5终端安装在非标准位置,请添加--path参数:

metatrader-http-server --login YOUR_LOGIN --password YOUR_PASSWORD --server YOUR_SERVER --path "C:\Program Files\MetaTrader 5\terminal64.exe" --host  0.0.0.0 --port 8000
  1. 在浏览器中打开http://localhost:8000/docs查看API文档

  2. 在Open WebUI中:

    • 转到设置工具
    • 点击添加工具服务器
    • 输入http://localhost:8000
    • 保存
  3. 现在您可以在Open WebUI聊天中使用交易工具!


💡 使用示例

与Claude Desktop一起使用

一旦配置好,您可以自然地聊天:

检查您的账户:

您:"显示我的账户信息"

Claude:返回余额、权益、保证金、杠杆等

获取市场数据:

您:"欧元/美元当前的价格是多少?"

Claude:显示买入价、卖出价和点差

下单:

您:"购买0.01手英镑/美元,止损设在1.2500,止盈设在1.2700"

Claude:执行交易并确认

管理仓位:

您:"关闭我所有的亏损仓位"

Claude:关闭仓位并报告结果

分析历史:

您:"显示上周所有欧元/美元的交易记录"

Claude:以表格形式返回交易历史

使用HTTP API

# 获取账户信息
curl http://localhost:8000/api/v1/account/info

# 获取当前价格
curl "http://localhost:8000/api/v1/market/price?symbol_name=EURUSD"

# 下市价单
curl -X POST http://localhost:8000/api/v1/order/market \
  -H "Content-Type: application/json" \
  -d '{
    "symbol": "EURUSD",
    "volume": 0.01,
    "type": "BUY",
    "stop_loss": 1.0990,
    "take_profit": 1.1010
  }'

# 获取所有开放仓位
curl http://localhost:8000/api/v1/positions

# 关闭特定仓位
curl -X DELETE http://localhost:8000/api/v1/positions/12345

作为Python库

from metatrader_client import MT5Client

# 连接到MT5
config = {
    "login": 12345678,
    "password": "your_password",
    "server": "MetaQuotes-Demo"
}
client = MT5Client(config)
client.connect()

# 获取账户统计数据
stats = client.account.get_trade_statistics()
print(f"余额: ${stats['balance']}")
print(f"权益: ${stats['equity']}")

# 获取当前价格
price = client.market.get_symbol_price("EURUSD")
print(f"欧元/美元买入价: {price['bid']},卖出价: {price['ask']}")

# 下市价单
result = client.order.place_market_order(
    type="BUY",
    symbol="EURUSD",
    volume=0.01,
    stop_loss=1.0990,
    take_profit=1.1010
)
print(result['message'])

# 关闭所有仓位
client.order.close_all_positions()

# 断开连接
client.disconnect()

📚 可用操作

账户管理

  • get_account_info - 获取余额、权益、利润、保证金水平、杠杆和货币

市场数据

  • get_symbols - 列出所有可用的交易符号
  • get_symbol_price - 获取某个符号的当前买入/卖出价格
  • get_candles_latest - 获取最近的价格蜡烛(OHLCV数据)
  • get_candles_by_date - 获取某个日期范围的历史蜡烛
  • get_symbol_info - 获取详细的符号信息

订单执行

  • place_market_order - 执行即时买入/卖出订单
  • place_pending_order - 下限价/止损订单以备未来执行
  • modify_position - 更新止损或止盈
  • modify_pending_order - 修改挂单参数

仓位管理

  • get_all_positions - 查看所有开放仓位
  • get_positions_by_symbol - 按交易对筛选仓位
  • get_positions_by_id - 获取特定仓位详情
  • close_position - 关闭特定仓位
  • close_all_positions - 关闭所有开放仓位
  • close_all_positions_by_symbol - 关闭某个符号的所有仓位
  • close_all_profitable_positions - 只关闭盈利交易
  • close_all_losing_positions - 只关闭亏损交易

挂单

  • get_all_pending_orders - 列出所有挂单
  • get_pending_orders_by_symbol - 按符号筛选挂单
  • cancel_pending_order - 取消特定挂单
  • cancel_all_pending_orders - 取消所有挂单
  • cancel_pending_orders_by_symbol - 取消某个符号的所有挂单

交易历史

  • get_deals - 获取已完成的历史交易
  • get_orders - 获取历史订单记录

🔧 高级配置

使用环境变量

而不是在命令行中放置凭据,创建一个.env文件:

LOGIN=12345678
PASSWORD=your_password
SERVER=MetaQuotes-Demo

# 可选:指定自定义MT5终端路径(未提供时自动检测)
# PATH=C:\Program Files\MetaTrader 5\terminal64.exe

然后无参数启动服务器:

metatrader-http-server

服务器将自动从.env文件加载凭据。

自定义端口和主机

metatrader-http-server --host 127.0.0.1 --port 9000

连接参数

MT5客户端支持额外的配置:

config = {
    "login": 12345678,
    "password": "your_password",
    "server": "MetaQuotes-Demo",
    "path": None,               # MT5终端可执行文件的完整路径(默认:自动检测)
    "timeout": 60000,           # 连接超时时间(毫秒,默认:60000)
    "portable": False,          # 启用便携模式(默认:False)
    "max_retries": 3,           # 最大连接重试次数(默认:3)
    "backoff_factor": 1.5,      # 重试延迟的指数退避因子(默认:1.5)
    "cooldown_time": 2.0,       # 连接尝试之间的最小等待时间(秒,默认:2.0)
    "debug": True               # 启用详细调试日志(默认:False)
}

配置选项:

  • login (int, 必填):您的MT5账户登录号
  • password (str, 必填):您的MT5账户密码
  • server (str, 必填):MT5服务器名称(例如:"MetaQuotes-Demo")
  • path (str, 可选):MT5终端可执行文件的完整路径。如果没有指定,客户端将自动搜索标准安装目录
  • timeout (int, 可选):连接超时时间(毫秒)。默认:60000(60秒)
  • portable (bool, 可选):启用MT5终端的便携模式。默认:False
  • max_retries (int, 可选):最大连接重试次数。默认:3
  • backoff_factor (float, 可选):重试延迟的指数退避因子。默认:1.5
  • cooldown_time (float, 可选):连接尝试之间的最小等待时间(秒)。默认:2.0
  • debug (bool, 可选):启用详细调试日志以进行故障排除。默认:False

🗺️ 发展路线图

功能状态
MetaTrader 5连接✅ 完成
Python客户端库✅ 完成
MCP服务器✅ 完成
Claude Desktop集成✅ 完成
HTTP/REST API服务器✅ 完成
Open WebUI集成✅ 完成
OpenAPI文档✅ 完成
PyPI包✅ 发布
Google ADK集成🚧 进行中
WebSocket支持📋 计划中
Docker容器📋 计划中

🛠️ 开发

设置开发环境

# 克隆仓库
git clone https://github.com/ariadng/metatrader-mcp-server.git
cd metatrader-mcp-server

# 以开发模式安装
pip install -e .

# 安装开发依赖
pip install pytest python-dotenv

# 运行测试
pytest tests/

项目结构

metatrader-mcp-server/
├── src/
│   ├── metatrader_client/      # 核心MT5客户端库
│   │   ├── account/            # 账户操作
│   │   ├── connection/         # 连接管理
│   │   ├── history/            # 历史数据
│   │   ├── market/             # 市场数据
│   │   ├── order/              # 订单执行
│   │   └── types/              # 类型定义
│   ├── metatrader_mcp/         # MCP服务器实现
│   └── metatrader_openapi/     # HTTP/REST API服务器
├── tests/                      # 测试套件
├── docs/                       # 文档
└── pyproject.toml             # 项目配置

🤝 贡献

欢迎贡献!以下是您可以帮助的方式:

  1. 报告错误 - 打开问题
  2. 提出功能 - 在问题中分享您的想法
  3. 提交拉取请求 - 修复错误或添加功能
  4. 改进文档 - 帮助使文档更清晰
  5. 分享示例 - 展示您如何使用它

贡献指南

  • 分叉仓库
  • 创建功能分支 (git checkout -b feature/amazing-feature)
  • 进行更改
  • 编写或更新测试
  • 确保测试通过 (pytest)
  • 提交更改 (git commit -m '添加精彩功能')
  • 推送到分支 (git push origin feature/amazing-feature)
  • 打开拉取请求

📖 文档


🆘 获取帮助

常见问题

"连接失败"

  • 确保MT5终端正在运行
  • 检查是否启用了算法交易
  • 验证您的登录凭据是否正确

"模块未找到"

  • 确保已安装该包:pip install metatrader-mcp-server
  • 检查您的Python版本是否为3.10或更高

"订单执行失败"

  • 验证该符号是否存在于您的经纪商处