使用说明
币安MCP交易机器人
作为Claude MCP服务器构建的币安期货交易系统。通过Claude与它交谈,它可以处理从市场数据查找到运行自主交易机器人(实时或模拟)的所有事情。
它做什么
- 执行币安期货交易(百万美元、百万美元、现货、保证金)
- 一次对单个符号或数百个符号进行回溯测试
- 操作完全自主的机器人,它们可以自己唤醒、计算信号和交易
- 使用纸质账户模拟交易(无需真实货币进行测试)
- 通过具有每笔交易和每日限额的风险引擎保护所有交易
- 发送订单、SL/TP点击和每日摘要的电报警报
- 在以下位置显示实时网络仪表板
localhost:8000
一切都是通过MCP通过Claude控制的——交易不需要UI。
设置
要求: Python 3.12+,Binance API密钥
git clone <repo>
cd binance_mcp
pip install -r requirements.txt
cp .env.json.template .env.json
# fill in your Binance API keys and optional Telegram config
python main.py
Claude桌面配置 (claude_desktop_config.json):
{
"mcpServers": {
"binance-trading-bot": {
"command": "python",
"args": ["/path/to/binance_mcp/main.py"]
}
}
}
连接后,Claude可以访问以下所有29个工具。
MCP工具(共29个)
交易
| 工具 | 它做什么 |
|---|---|
place_market_order |
立即执行市价单。SL/TP/leverage的智能默认值——无需指定所有内容。 |
place_limit_order |
通过SL/TP和风险验证发出限价单。 |
close_position |
以给定价格平仓。 |
cancel_order |
按订单ID取消未结订单 |
set_leverage |
在交易前为期货交易品种设置杠杆(1-125倍)。 |
get_positions |
获取按市场类型筛选的未平仓头寸。 |
get_account_balance |
真实币安账户状态:钱包余额、可用保证金、未实现的PnL、所有未结头寸。 |
市场数据
| 工具 | 它做什么 |
|---|---|
get_ticker |
任何交易品种的最新24小时价格、买卖、交易量和价格变化。 |
get_order_book |
在可配置的深度(最多100个级别)进行出价和要价。 |
get_klines |
历史悠久的OHLCV蜡烛。支持从1米到1米的所有15个时间范围。 |
get_funding_rate |
当前融资率、标记价格、指数价格和下一次融资时间。 |
get_open_interest |
期货交易品种的未平仓合约总额。 |
get_recent_trades |
最近的公开交易(多达1000笔)。 |
get_futures_symbols |
币安USD-M永久期货完整列表(约500-600个交易品种)。 |
回溯测试
| 工具 | 它做什么 |
|---|---|
run_backtest |
使用用户定义的进入/退出条件进行自定义策略回溯测试。 |
run_futures_backtest |
使用内置策略对单个交易品种进行杠杆期货回溯测试。通过分页蜡烛提取处理多年日期范围。 |
scan_futures_backtest |
一次在多达100个符号上运行一个策略。按夏普比率返回排名结果。 |
内置策略: ema_crossover (9/21ema), sma_crossover (10/30毫安), momentum (20个周期), mean_reversion (RSI 14)
票据交易
所有论文会话都是隔离的,在内存中,并支持杠杆1-125x。
| 工具 | 它做什么 |
|---|---|
start_paper_trading |
创建一个具有起始余额的虚拟交易时段。返回会话ID |
stop_paper_trading |
结束论文会议(现有职位保留,没有新职位)。 |
get_paper_positions |
未实现PnL的未结头寸。 |
get_paper_balance |
虚拟股权、可用余额、已实现和未实现净现值。 |
get_paper_trade_history |
一个交易时段的完整交易历史记录。 |
reset_paper_account |
擦除位置和历史记录,恢复初始平衡。 |
自主机器人
机器人作为后台异步任务运行。每个机器人每¼烛光周期(至少15秒)唤醒一次,读取最后一次 完成 bar,计算信号,并自动放置或关闭位置。
| 工具 | 它做什么 |
|---|---|
start_live_bot |
启动一个自主机器人。设置 is_paper=true 用于模拟或 false 用于实时真钱交易。 |
stop_live_bot |
停止机器人。未平仓合约在关闭前以市场价格平仓。 |
get_live_bot_status |
机器人状态、当前位置、累计PnL、获胜率、最近信号、交易历史。 |
list_live_bots |
所有正在运行的机器人及其当前状态。 |
风险和规模
| 工具 | 它做什么 |
|---|---|
get_risk_metrics |
内部风险引擎状态:每笔交易限额、每日提款跟踪器、头寸敞口。 |
calculate_position_size |
使用FIXED_PERCENTAGE、KELLY_RITERION、VOLATILITY_BASED或ATR_BASE方法确定最佳位置大小。 |
配置
{
"binance": {
"api_key": "YOUR_API_KEY",
"api_secret": "YOUR_API_SECRET",
"testnet": true
},
"telegram": {
"bot_token": "YOUR_BOT_TOKEN",
"default_chat_id": "YOUR_CHAT_ID"
},
"risk": {
"max_trade_loss_pct": 2.0,
"max_daily_loss_pct": 5.0,
"max_open_positions": 10,
"max_portfolio_risk_pct": 10.0
},
"dashboard": {
"host": "0.0.0.0",
"port": 8000
},
"database": {
"path": "./data/trading.db",
"backup_enabled": true,
"backup_interval_hours": 24
},
"logging": {
"level": "INFO",
"log_dir": "./logs"
}
}
开始做 testnet: true 直到你用你的策略验证了行为。
风险引擎
每笔交易在执行前都会经过四个断路器:
| 保护 | 默认 | 行为 |
|---|---|---|
| 每笔交易最大损失 | 2% | 单个订单的硬阻止 |
| 每日提款终止开关 | 5% | 停止当天所有新交易 |
| 最大未平仓头寸 | 10 | 拒绝超过限额的新条目 |
| 投资组合集中度 | 10% | 限制每个头寸的风险敞口 |
这些限制可在中配置 .env.json风险引擎每5秒进行一次连续检查。
回溯测试
回溯测试引擎获取真实的币安蜡烛数据(为大日期范围分页),运行具有真实滑点和佣金的逐点模拟,并报告:
- 总回报率、复合年增长率、夏普比率
- 最大跌幅、波动性
- 胜率、利润率、预期
- 采收率
scan_futures_backtest 按顺序在多个符号上运行此操作,并显示最佳执行者——这对于在部署资本之前找到策略实际适用的配对非常有用。
安全
API密钥从不以明文形式存储。保险库使用:
- Fernet对称加密 (从
cryptography图书馆) - PBKDF2密钥推导 48万次迭代
- 盐与加密的保管库文件分开存储
所有Binance API连接都使用SSL/TLS。速率限制是自动处理的。
仪表盘
实时网络仪表板运行在 http://localhost:8000 显示:
- 账户权益和PnL
- 风险敞口和提款
- 空缺职位
- 交易历史和每日统计数据
通过WebSocket进行更新——无需手动刷新。
电报警报
配置后,机器人会发送以下警报:
- 订单已执行/头寸已关闭(带PnL)
- 风险违规(严重违规)
- 每日损失预警/提款预警
- 已达到最大位置
- 已触发止盈/止损
- 每日摘要
- 帐户状态更新
警报被限制以防止垃圾邮件。
项目结构
binance_mcp/
├── core/
│ ├── security/ # Fernet vault, PBKDF2 key derivation
│ ├── config/ # Config schema and manager
│ ├── database/ # SQLite with async pooling (aiosqlite)
│ └── logging/ # Structured logging
├── exchange/
│ ├── clients/ # Spot, USD-M Futures, COIN-M Futures, Margin
│ ├── ccxt_client.py # Async ccxt wrapper for futures data
│ └── paper_session.py # Paper trading sessions
├── risk/
│ ├── guards.py # Circuit breakers
│ ├── sizing.py # Position sizing methods
│ └── manager.py # Real-time risk monitoring
├── backtesting/
│ ├── engine/ # Tick-by-tick simulator
│ ├── metrics/ # Performance metrics calculator
│ └── orchestrator.py # Backtest runner and scanner
├── trading/
│ └── autonomous_engine.py # AutonomousBot + BotManager
├── mcp_app/
│ ├── server/runner.py # MCPServerRunner (all tool implementations)
│ └── protocol.py # Tool registry and dispatcher (29 tools)
├── dashboard/
│ ├── server.py # FastAPI app
│ ├── routes.py # REST API endpoints
│ └── public/ # Web frontend
├── notifications/ # Telegram alerts
├── requirements.txt
├── Dockerfile
└── docker-compose.yml
码头工人
# Build and run
docker build -t binance-trading-bot:latest .
docker-compose up -d
# Logs
docker logs -f binance-trading-bot
# With volume mounts for config and data
docker run -d \
-p 8000:8000 \
-v $(pwd)/.env.json:/app/.env.json \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
binance-trading-bot:latest
测试
# Run all tests
pytest tests/ -v
# Specific test file
pytest tests/integration/test_phase3_risk.py -v
# With coverage
pytest tests/ --cov=. --cov-report=html
堆栈
| 图层 | 库 |
|---|---|
| MCP服务器 | mcp |
| Exchange API | ccxt, aiohttp,币安REST |
| Web仪表板 | fastapi, uvicorn, websockets |
| 数据处理 | pandas, numpy |
| 安全 | cryptography (套圈+PBKDF2) |
| 数据库 | aiosqlite (SQLite) |
| 验证 | pydantic |
| HTTP客户端 | httpx, requests |
备注
- 始终先在测试网或纸质模式下测试新策略
- 自主机器人对 最后完成的酒吧 --不是仍在形成的蜡烛
scan_futures_backtest可以扫描多达100个符号,但需要时间——使用较小的max_symbols用于快速检查- 数据库和日志被写入
./data/和./logs/--如果长期运行,请备份这些
许可证
使用风险自负。这是一种交易工具——真钱可能会损失。上线前进行彻底测试。