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

MetaTrader MCP Server 是一个连接AI助手(如Claude、ChatGPT)到MetaTrader 5交易平台的桥梁。您无需点击按钮,只需告诉您的AI助手要做什么:
"显示我的账户余额" "购买0.01手欧元/美元" "关闭所有盈利仓位"
AI会理解您的请求,并在MetaTrader 5上自动执行。
您 → AI助手 → MCP服务器 → MetaTrader 5 → 您的交易
请仔细阅读:
金融工具交易涉及重大损失风险。此软件按原样提供,开发者不承担任何因使用此软件而导致的交易损失、收益或后果的责任。
通过使用此软件,您确认:
这不是财务建议。始终负责任地进行交易。
在开始之前,请确保您拥有:
打开您的终端或命令提示符并运行:
pip install metatrader-mcp-server
工具 → 选项专家顾问标签允许算法交易确定根据您的使用需求选择:
找到您的Claude Desktop配置文件:
打开文件并添加以下配置:
{
"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"
]
}
}
}
将YOUR_MT5_LOGIN、YOUR_MT5_PASSWORD和YOUR_MT5_SERVER替换为您的实际凭据
重新启动Claude Desktop
开始聊天!尝试:"我的账户余额是多少?"
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
在浏览器中打开http://localhost:8000/docs查看API文档
在Open WebUI中:
http://localhost:8000现在您可以在Open WebUI聊天中使用交易工具!
一旦配置好,您可以自然地聊天:
检查您的账户:
您:"显示我的账户信息"
Claude:返回余额、权益、保证金、杠杆等
获取市场数据:
您:"欧元/美元当前的价格是多少?"
Claude:显示买入价、卖出价和点差
下单:
您:"购买0.01手英镑/美元,止损设在1.2500,止盈设在1.2700"
Claude:执行交易并确认
管理仓位:
您:"关闭我所有的亏损仓位"
Claude:关闭仓位并报告结果
分析历史:
您:"显示上周所有欧元/美元的交易记录"
Claude:以表格形式返回交易历史
# 获取账户信息
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
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)
}
配置选项:
| 功能 | 状态 |
|---|---|
| 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 # 项目配置
欢迎贡献!以下是您可以帮助的方式:
git checkout -b feature/amazing-feature)pytest)git commit -m '添加精彩功能')git push origin feature/amazing-feature)"连接失败"
"模块未找到"
pip install metatrader-mcp-server"订单执行失败"