币安期货交易机器人

一款基于Claude MCP服务器的币安期货交易系统,支持市场数据查询、自动化交易机器人运行及模拟交易,无需界面操作。

  • by MCP-automation
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MCP-automation/MCP-Binance

使用说明

币安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/ --如果长期运行,请备份这些

许可证

使用风险自负。这是一种交易工具——真钱可能会损失。上线前进行彻底测试。