cTrader MCP 服务器
一个独立的模型上下文协议(MCP)服务器,使AI助手能够与cTrader交易平台进行交互。
🚀 这是什么?
这款MCP服务器允许像Claude这样的AI助手通过自然语言对话在cTrader上执行交易、分析市场以及管理仓位。
示例对话:
- *“显示我的账户余额”* → 获取余额、权益、仓位
- *“以1.08为止损点,买入0.01手EURUSD”* → 进行交易
- *“计算GBPUSD的相对强弱指数(RSI)”* → 分析技术指标
- *“平掉所有亏损仓位”* → 管理风险
✨ 特点
交易运营
- ✅ 市价单 - 立即以当前价格执行
- ✅ 限价订单 - 在特定价格水平下单
- ✅ 表示“正确”或“完成”。 止损订单 - 止损或止盈/止损限价单
- ✅ 位置管理 - 全部或部分平仓
- ✅ 订单管理 - 取消待处理订单
市场数据与分析
- ✅ 表示“正确”或“已确认”。 历史数据 - OHLCV蜡烛图(9个时间框架:1分钟、5分钟、15分钟、30分钟、1小时、4小时、1天、1周、1月)
- ✅ 技术指标 - 相对强弱指数(RSI),移动平均收敛散度指标(MACD),指数移动平均线(EMA),简单移动平均线(SMA),布林带(Bollinger Bands),平均真实波幅(ATR),随机指标(Stochastic)
- ✅ 实时行情报价(或实时交易记录) - 订阅实时价格数据流
- ✅ 符号搜索 - 浏览100多种交易工具
账户信息
- ✅ 账户状态 - 账户余额、权益、保证金、可用保证金
- ✅ 位置追踪 - 所有持仓及盈亏情况
- ✅ 订单追踪 - 所有待处理订单
- ✅ 损益分析 - 详细的盈亏明细
🎯 可用工具(共14个)
| 工具 | 描述 |
|---|---|
get_account_status 查看余额、权益、保证金及损益 | |
get_positions | 列出所有开放职位及其详细信息 |
get_pending_orders | 显示所有待处理的限价/止损订单 |
get_position_pnl | 获取详细的损益表细分 |
create_market_order | 按当前市场价格执行交易 |
create_limit_order | 以特定价格下单 |
create_stop_order | 下达止损或止损入场订单 |
close_position | 完全或部分平仓 |
cancel_order | 取消待处理订单 |
list_symbols | 浏览可用交易工具 |
get_historical_data | 获取OHLCV(开盘价、最高价、最低价、收盘价、成交量)K线数据 |
get_indicator | 计算技术指标 |
subscribe_to_ticks 订阅实时价格更新 | |
unsubscribe_from_ticks | 取消订阅价格更新 |
📋 先决条件
- Python 3.10 或更高版本
- 一个cTrader账户(模拟或真实)
- cTrader API 凭证
🔧 安装
获取cTrader API凭据
- 访问 https://help.ctrader.com/open-api/creating-new-app/(创建新应用程序的开放API页面)
- 创建一个应用程序以获取:
- CLIENT_ID - CLIENT_SECRET
- 生成一个访问令牌:
- ACCESS_TOKEN
- 在cTrader中找到您的账户ID:
- ACCOUNT_ID
2. 安装服务器
# Clone or download this repository
cd ctrader-mcp-server
# Run installation script
./install.sh3. 配置凭据
创建一个 .env 项目根目录下的文件:
CLIENT_ID=your_client_id_here
CLIENT_SECRET=your_client_secret_here
ACCESS_TOKEN=your_access_token_here
ACCOUNT_ID=your_account_id_here
HOST=demo重要提示: 使用 HOST=demo 用于测试!
4. 测试服务器
# Activate virtual environment
source venv/bin/activate
# Run tests
python test_server.py你应该看到:
✓ Bot initialized and authenticated
✓ Account status retrieved
✓ Found X EUR symbols
...
All Tests Completed Successfully! ✓🤖 配置AI助手
Claude Desktop(克劳德桌面版)
- 找到你的配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 添加此配置:
{
"mcpServers": {
"ctrader": {
"command": "/absolute/path/to/ctrader-mcp-server/venv/bin/python",
"args": [
"/absolute/path/to/ctrader-mcp-server/server.py"
],
"cwd": "/absolute/path/to/ctrader-mcp-server"
}
}
}- 重启Claude桌面版
其他MCP客户端
此服务器实现了标准的MCP协议,应能与任何兼容MCP的客户端正常工作。
💬 示例对话
一旦配置完成,您就可以进行自然交互:
检查账户:
你:“我的cTrader账户里有多少钱?” AI:“您的账户余额为10,000美元,权益为10,250美元,当前有3个未平仓头寸,总盈亏为+250美元。”
交易地点:
你:“买入0.01手欧元兑美元,止损价设为1.08,止盈价设为1.10。” AI:“订单已执行!以1.09245的价格买入0.01手EURUSD,止损位设为1.08000,止盈位设为1.10000。”
分析市场:
你:“请计算GBPUSD在15分钟图表上的相对强弱指数(RSI)” AI:“GBPUSD在15分钟线上的RSI(14)指标目前为65.3,表明该货币对正接近超买区域。”
管理风险:
你:“平掉所有亏损超过50美元的仓位” AI:“发现1个仓位亏损超过50美元。已平仓GBPUSD(亏损:-62.50美元)。”。“
📚 文档
🔐 安全与保障
模拟交易与实盘交易
- 默认配置使用 模拟账户
- 明确设置
HOST=live在.env用于实时交易 - 在正式上线前,务必在演示环境中进行充分测试
风险管理
- 所有订单均支持止损和止盈
- 平仓可以是部分平仓或全部平仓
- 交易手数以手为单位指定(0.01 = 微手)
凭证安全
- 存储在(某处)的凭据
.env文件(从未提交) - 环境变量从不在日志中暴露
- 在操作之前验证了认证状态
🚨 重要警告
⚠️(表示警告或注意的符号) 交易蕴含重大风险,您可能会损失资金。\ ⚠️ 务必先在模拟账户上进行测试\ ⚠️ 实盘交易时从小仓位开始\ ⚠️(警告或注意的符号,无具体文字含义) 使用止损单来限制风险\ ⚠️ 永远不要分享你的凭证或访问令牌
🛠️ 开发
项目结构
ctrader-mcp-server/
├── server.py # Main MCP server
├── ctrader_bot.py # cTrader API wrapper
├── test_server.py # Testing tool
├── install.sh # Installation script
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── README.md # This file
└── docs/ # Documentation
├── QUICKSTART.md
├── GUIDE.md
├── ARCHITECTURE.md
├── CONFIGURATION.md
└── API.md运行测试
# Basic functionality test
python test_server.py
# Run with specific account
ACCOUNT_ID=12345 python test_server.py
# Test with live account (careful!)
HOST=live python test_server.py添加新工具
添加新工具:
- 在(某处)添加工具定义
server.pyhandle_list_tools() - 在(某处)实现处理程序
_execute_tool() - 添加相应的方法到
ctrader_bot.py如有需要 - 更新文档
📊 性能
- 启动时间: 5-10秒(认证+符号加载)
- 订单执行: \<100毫秒(市价订单)
- 历史数据: 1-5秒(100根蜡烛)
- 指标计算: \< 1秒
- 内存使用情况: 50-100 MB
🌐 请求速率限制
cTrader API强制执行:
- 每秒50个请求 用于交易操作
- 每秒5个请求 用于历史数据
服务器会自动遵守这些限制。
🐛 故障排除
“机器人未准备好”错误
- 检查
.env文件凭证 - 验证网络连接
- 确保cTrader账户处于活跃状态
- 检查服务器日志中的认证错误
符号未找到
- 使用
list_symbols查看可用符号的工具 - 符号名称区分大小写
- 不同的经纪人可能有不同的符号名称
订单被拒绝
- 检查账户余额和保证金
- 验证该符号是否可交易
- 确保音量达到最低要求
- 检查市场是否开放
连接问题
- 验证API凭据是否正确
- 检查账户是否处于活跃状态
- 确保没有防火墙阻止端口5035(演示)或5034(实时)
🔗 资源
📄 许可证
MIT 许可证 - 详见 LICENSE 文件
⚖️ 免责声明
本软件按“现状”提供,不附带任何形式的保证。交易存在重大风险,您可能会损失资金。使用风险自担。在实际交易前,请务必在模拟账户上进行测试。
🤝 贡献
欢迎投稿!请:
- 为仓库创建分支
- 创建一个特性分支
- 做出你的更改
- 如适用,请添加测试
- 提交拉取请求
📧 支持
- 📖 检查一下 文件、文档
- 🐛 在GitHub上报告问题
- 💬 加入 cTrader 社区
______________________________________________________________________
专为算法交易者打造,倾注爱心
准备开始了吗? 跑步 ./install.sh 并按照上面的指示操作!
