一个基于 Python 的企业级自动化交易程序,支持 Binance (币安) 和 OKX (欧易) 等多个交易所。采用先进的网格交易策略,结合动态波动率分析和多层风险管理,旨在稳定捕捉市场波动收益。
- ✅ Binance 测试网: 支持 Binance 官方测试网环境,使用测试币无风险测试
- ✅ OKX 模拟盘: 支持 OKX Demo Trading 模拟交易
- ✅ 一键切换: 通过
TESTNET_MODE=true轻松切换到测试环境 - ✅ 完全隔离: 测试网与实盘环境完全独立,保证资金安全
- ✅ 新手友好: 在测试网中学习和验证策略,零风险
- 📖 详细文档: CLAUDE.md - 测试网使用指南
- ✅ INITIAL_PRINCIPAL 自动检测: 设置为0时自动检测账户总资产,无需手动配置
- ✅ LOG_LEVEL 字符串支持: 支持
LOG_LEVEL=INFO等直观的字符串配置 - ✅ 配置合并优化: 修复 DYNAMIC_INTERVAL_PARAMS 配置合并逻辑
- ✅ 更友好的错误提示: 增强配置验证和错误信息
- ✅ 价格止损: 当价格跌破基准价特定比例时自动平仓
- ✅ 回撤止盈: 从最高盈利回撤超过阈值时锁定利润
- ✅ 紧急平仓: 市价单快速清仓,5次重试确保成功
- ✅ 17个单元测试: 完整的测试覆盖
- ✅ 配置简单: Web 控制台中一键启用/禁用
- ✅ Binance & OKX 完整支持: 现货交易 + 理财功能
- ✅ 1230+ 行企业级代码: 抽象工厂 + 适配器模式
- ✅ 100% 类型注解: 完整的类型安全保障
- ✅ 15+ 单元测试: 核心功能测试覆盖
- ✅ 即插即用: 修改配置即可切换交易所
- ✅ OpenAI 自定义 Base URL: 支持国内中转服务
- ✅ 多模型支持: GPT-4 / Claude 智能分析
- ✅ 技术指标综合分析: RSI, MACD, 布林带等
- ✅ 市场情绪监测: Fear & Greed Index
- ✅ Binance (币安): 完整支持现货交易和简单储蓄
- ✅ OKX (欧易): 完整支持现货交易和余币宝
- ✅ 即插即用: 修改配置即可切换交易所,无需修改代码
- ✅ 统一接口: 所有交易所使用相同的API接口
- ✅ 易于扩展: 插件化架构,可轻松添加新交易所
- ✅ 任意交易对支持: BNB/USDT, ETH/USDT, BTC/USDT 等所有现货交易对
- ✅ 并发执行: 多个交易对同时独立运行,互不干扰
- ✅ 动态配置: 每个交易对可设置独立的初始价格和网格参数
- ✅ 资源共享: 单例模式管理连接,避免 API 限流
- ✅ 7日4小时线波动率: 基于4小时K线数据的敏感波动率计算
- ✅ EWMA混合算法: 70% EWMA + 30% 传统波动率,平衡稳定性与敏感性
- ✅ 动态网格调整: 根据实时波动率自动调整网格大小 (1.0% - 4.0%)
- ✅ 连续函数计算: 平滑的网格大小调整,避免阶跃变化
- ✅ 波动率平滑: 移动平均平滑,减少噪音干扰
- ✅ 多模型支持: 集成OpenAI (GPT-4, GPT-3.5) 和 Anthropic (Claude)
- ✅ 技术指标分析: RSI, MACD, 布林带, EMA, 成交量等综合分析
- ✅ 市场情绪监测: 实时获取Fear & Greed Index市场情绪指标
- ✅ 智能触发机制: 基于技术信号变化、时间间隔、市场波动自动触发
- ✅ 成本控制: 每日调用限制、置信度阈值、金额比例控制
- ✅ 风险协同: 与现有风控系统无缝集成,确保交易安全
- ✅ 自定义OpenAI Base URL: 支持国内中转服务
- ✅ 止损机制: 价格止损和回撤止盈双重保护,最大限度降低极端行情风险
- 价格止损:当价格相对基准价下跌超过设定比例时触发(默认15%)
- 回撤止盈:当盈利从最高点回撤超过设定比例时锁定利润(默认20%)
- 紧急平仓:自动市价单清仓,5次重试机制确保执行成功
- 📖 详细文档: 止损机制设计
- ✅ 仓位限制: 可配置的最大/最小仓位比例控制
- ✅ 连续失败保护: 最大重试次数限制,防止僵尸进程
- ✅ 实时监控: 风险状态实时评估和告警
- ✅ 紧急停止: 异常情况下的自动停止机制
- ✅ 理财功能开关: 可选禁用理财功能,适合子账户用户
- ✅ Docker 容器化: 完整的 Docker Compose 部署方案
- ✅ Nginx 反向代理: 高性能 Web 服务和负载均衡
- ✅ 健康检查: 自动监控和故障恢复
- ✅ 数据持久化: 完整的状态保存和恢复机制
- ✅ 一键更新: 便捷的更新脚本
- ✅ 实时监控: 交易状态、收益统计、风险指标
- ✅ 多币种视图: 支持多交易对的统一监控界面
- ✅ 基础认证: 可选的用户名密码保护
- ✅ 响应式设计: 支持桌面和移动设备访问
- ✅ Prometheus指标: 42个核心指标实时采集
- ✅ Grafana仪表盘: 专业的数据可视化界面
- ✅ 智能告警: 多级别告警规则自动监控
- ✅ 性能监控: CPU、内存、磁盘使用率实时跟踪
- ✅ 交易分析: 订单延迟、成功率、盈亏趋势分析
- ✅ 抽象工厂模式: 统一的交易所创建接口
- ✅ 策略模式: 不同交易所的策略实现
- ✅ 适配器模式: 统一的业务接口
- ✅ 单例模式: 全局唯一的交易所实例
- ✅ 1230+ 行企业级代码: 核心多交易所架构
- ✅ 100% 类型注解覆盖: 完整的类型安全
- ✅ 完整的文档字符串: 每个类和方法都有详细说明
- ✅ 15+ 单元测试: 完整的测试覆盖
- ✅ 配置验证: 启动前配置检查
- ✅ 健康检查: 运行时健康监控
- Python: 3.8+ (推荐 3.10+)
- Docker: 20.10+ (可选,推荐用于生产部署)
- 内存: 最低 512MB,推荐 1GB+
- 存储: 500MB 可用空间
- 网络: 稳定的互联网连接
- CPU: 1核心及以上
- 内存: 512MB+ RAM
- 网络: 亚洲地区服务器 (日本、新加坡等)
- 操作系统: Ubuntu 20.04+, Windows 10+, macOS 10.15+
-
克隆项目
git clone https://github.com/EBOLABOY/GridBNB-USDT.git cd GridBNB-USDT -
初始化配置数据库
# 仅首次需要执行 python scripts/init_database.py启动容器后,访问 Web 控制台填写所有 API 密钥和策略参数,无需 config/.env 文件。
-
启动服务
# Windows 用户 start-with-nginx.bat # Linux/Mac 用户 chmod +x start-with-nginx.sh ./start-with-nginx.sh
-
访问 Web 界面
- 打开浏览器访问: http://localhost
-
克隆并安装
git clone https://github.com/EBOLABOY/GridBNB-USDT.git cd GridBNB-USDT # 创建虚拟环境 python -m venv .venv # 激活虚拟环境 # Windows: .\.venv\Scripts\activate # Linux/Mac: source .venv/bin/activate # 安装依赖 pip install -r requirements.txt
-
配置和运行
# 初始化配置数据库(仅首次) python scripts/init_database.py # 运行程序 python src/main.py
启动后访问
http://localhost:58181,使用默认账号admin/admin123登录 Web 控制台,在界面中填写交易所 API 密钥和策略参数,再通过“配置管理 → 重新加载”按钮让新配置立即生效。
在 Web 控制台的“配置管理”中设置:
EXCHANGE=binance
BINANCE_API_KEY="your_binance_api_key"
BINANCE_API_SECRET="your_binance_api_secret"在 Web 控制台中填写:
EXCHANGE=okx
OKX_API_KEY="your_okx_api_key"
OKX_API_SECRET="your_okx_api_secret"
OKX_PASSPHRASE="your_okx_passphrase" # OKX特有参数无需修改代码,只需更改配置!
# 从 Binance 切换到 OKX
# 1. 在 Web 控制台中将 EXCHANGE 设置为 okx
# 2. 填写 OKX API 配置
# 3. 使用配置管理的“重新加载”按钮或重启程序GridBNB-USDT/
├── src/ # 源代码目录
│ ├── main.py # 应用入口
│ ├── core/ # 核心模块
│ │ ├── trader.py # 网格交易器
│ │ ├── exchanges/ # 🆕 多交易所架构
│ │ │ ├── base.py # 抽象基类和接口
│ │ │ ├── factory.py # 工厂模式实现
│ │ │ ├── binance.py # Binance适配器
│ │ │ ├── okx.py # OKX适配器
│ │ │ └── utils.py # 工具函数
│ │ └── order_tracker.py # 订单跟踪
│ ├── strategies/ # 策略模块
│ │ ├── ai_strategy.py # 🆕 AI辅助策略
│ │ └── risk_manager.py # 风险管理
│ ├── services/ # 服务模块
│ │ ├── monitor.py # 交易监控
│ │ └── fastapi_server.py # FastAPI + React 统一前端服务
│ └── config/ # 配置模块
│ └── settings.py # 配置管理
├── tests/ # 测试目录
│ └── unit/ # 单元测试
│ ├── test_exchange_factory.py # 🆕 交易所工厂测试 (15+测试)
│ ├── test_exchange_adapters.py # 🆕 交易所适配器测试
│ ├── test_trader.py # 交易器核心逻辑测试
│ ├── test_config.py # 配置验证测试
│ ├── test_risk_manager.py # 风险管理测试
│ ├── test_ai_strategy.py # 🆕 AI策略测试
│ └── test_web_auth.py # Web认证测试
├── docs/ # 文档目录
│ ├── architecture/ # 🆕 架构文档
│ │ ├── multi-exchange-design.md # 🆕 多交易所架构设计
│ │ └── QUICK_START.md # 🆕 快速开始指南
│ ├── CLAUDE.md # AI 上下文文档(完整技术文档)
│ ├── MIGRATION_GUIDE.md # 迁移指南
│ ├── AI_STRATEGY_GUIDE.md # AI策略使用指南
│ ├── MONITORING_GUIDE.md # 监控系统指南
│ └── CODE_QUALITY.md # 代码质量规范
├── examples/ # 🆕 示例代码
│ └── multi_exchange_usage.py # 多交易所使用示例
├── docker/ # Docker配置
│ ├── Dockerfile
│ └── docker-compose.yml
└── config/ # 配置文件
├── .pre-commit-config.yaml # Pre-commit钩子配置
└── pytest.ini # Pytest配置
# ========== 交易所选择 ==========
# 选择要使用的交易所: binance / okx
EXCHANGE=binance
# ========== 测试网/模拟盘配置 🆕 ==========
# 是否使用测试网(true=模拟盘测试, false=实盘交易)
# 测试网使用测试币,不会影响真实资金,适合调试和学习
TESTNET_MODE=false
# ========== Binance API ==========
# 如果使用币安交易所,必填
BINANCE_API_KEY="your_binance_api_key_here"
BINANCE_API_SECRET="your_binance_api_secret_here"
# Binance 测试网 API(可选,仅在 TESTNET_MODE=true 时使用)🆕
# 测试网申请地址: https://testnet.binance.vision/
# BINANCE_TESTNET_API_KEY="your_testnet_api_key_here"
# BINANCE_TESTNET_API_SECRET="your_testnet_api_secret_here"
# ========== OKX API ==========
# 如果使用OKX交易所,必填
# OKX requires all three parameters
OKX_API_KEY="your_okx_api_key_here"
OKX_API_SECRET="your_okx_api_secret_here"
OKX_PASSPHRASE="your_okx_passphrase_here"
# OKX 测试网 API(可选,仅在 TESTNET_MODE=true 时使用)🆕
# OKX Demo环境需要单独申请API密钥
# 申请地址: https://www.okx.com/account/my-api (选择"Demo Trading"模式)
# OKX_TESTNET_API_KEY="your_okx_demo_api_key_here"
# OKX_TESTNET_API_SECRET="your_okx_demo_api_secret_here"
# OKX_TESTNET_PASSPHRASE="your_okx_demo_passphrase_here"
# ========== 策略核心配置 ==========
# 要运行的交易对列表,用英文逗号分隔
# 例如: "BNB/USDT,ETH/USDT,BTC/USDT"
SYMBOLS="BNB/USDT,ETH/USDT"
# 按交易对设置初始参数 (JSON格式)
# 为每个交易对设置 "initial_base_price" 和 "initial_grid"
# 如果某个交易对在此处未定义,程序将自动使用当前市价作为基准价,并使用下面的全局INITIAL_GRID
INITIAL_PARAMS_JSON='{"BNB/USDT": {"initial_base_price": 600.0, "initial_grid": 2.0}, "ETH/USDT": {"initial_base_price": 3000.0, "initial_grid": 2.5}, "BTC/USDT": {"initial_base_price": 45000.0, "initial_grid": 1.5}}'
# 全局默认初始网格大小 (%)
# 仅当上面的INITIAL_PARAMS_JSON中未指定某个交易对的网格时使用
INITIAL_GRID=2.0
# 最小交易金额 (USDT),请确保大于交易所对该交易对的最小名义价值要求 (通常是10 USDT)
MIN_TRADE_AMOUNT=20.0
# ========== 初始状态设置 ==========
# 🆕 初始本金(用于计算总盈亏和盈亏率,单位: USDT)
# 设置为0或不设置时,系统会在启动时自动检测账户总资产
# 建议:首次运行设置为0自动检测,之后可固定为启动时的总资产以便准确计算盈亏
INITIAL_PRINCIPAL=0
# ========== 日志配置 🆕 ==========
# 日志级别(可选值: DEBUG, INFO, WARNING, ERROR, CRITICAL)
# 支持字符串或对应的整数值(10=DEBUG, 20=INFO, 30=WARNING, 40=ERROR, 50=CRITICAL)
# 建议生产环境使用 INFO,调试时使用 DEBUG
LOG_LEVEL=INFO
# ========== 可选配置 ==========
# AI策略配置
ENABLE_AI_STRATEGY=false
AI_PROVIDER=openai # openai 或 claude
OPENAI_API_KEY="your_openai_key"
OPENAI_BASE_URL="https://api.openai.com/v1" # 支持自定义中转服务
ANTHROPIC_API_KEY="your_anthropic_key"
# PushPlus 通知 Token,用于发送交易通知或警报
PUSHPLUS_TOKEN="your_pushplus_token_here"
# 是否启用自动申购/赎回理财功能 (true/false)
# Binance: 简单储蓄 | OKX: 余币宝
# 对于使用子账户API的用户,或不希望使用理财功能的用户,请设置为 false
ENABLE_SAVINGS_FUNCTION=true
# Web UI 访问认证。如果留空,Web界面将无需密码即可访问。
WEB_USER="admin"
WEB_PASSWORD="YourSecurePasswordHere"
# 代理设置 (如果需要通过代理连接交易所)
# 例如: HTTP_PROXY="http://127.0.0.1:7890"
HTTP_PROXY=- ✅ 确保 API Key 只有现货交易权限
- ✅ 禁用提现权限
- ✅ 不要在公共场所或代码中暴露密钥
- ✅ 定期更换 API 密钥
- ✅ OKX用户:妥善保管 Passphrase
启用理财功能 (默认):
ENABLE_SAVINGS_FUNCTION=true- ✅ Binance: 自动申购/赎回简单储蓄
- ✅ OKX: 自动申购/赎回余币宝
- ✅ 最大化资金利用效率
禁用理财功能:
ENABLE_SAVINGS_FUNCTION=false- ✅ 所有资金保留在现货账户
- ✅ 适合子账户用户或保守用户
- Docker 部署: http://localhost
- 直接运行: http://localhost:58181
- 📊 实时监控: 交易状态、收益统计、持仓分析
- 📈 多币种视图: 支持多交易对统一监控
- 📱 响应式设计: 支持手机和平板访问
- 🔐 安全认证: 可选的用户名密码保护
cd GridBNB-USDT
chmod +x update.sh
./update.shgit pull origin main
docker compose up -d --build
docker compose ps- 应用日志:
logs/trading_system.log - Docker 日志:
docker compose logs -f
# 查看服务状态
docker compose ps
# 查看实时日志
docker compose logs -f gridbnb-bot
# 查看系统资源
docker stats-
配置验证失败
# 运行配置验证 python -c " import asyncio from src.core.exchange.validator import validate_and_create_exchange asyncio.run(validate_and_create_exchange()) "
-
OKX连接失败
- 检查是否提供了
OKX_PASSPHRASE - 验证 API 权限设置
- 确认 API 密钥格式正确
- 检查是否提供了
-
理财功能报错
- 检查 API 是否有理财权限
- 子账户用户设置
ENABLE_SAVINGS_FUNCTION=false
-
Docker 相关
docker --version docker compose version docker compose restart docker compose logs gridbnb-bot
- 📖 文档中心: docs/
- 🐛 问题反馈: GitHub Issues
- 💬 社区讨论: Telegram群组
- 投资风险: 数字货币交易存在高风险,可能导致本金损失
- 策略风险: 网格策略在单边行情中可能表现不佳
- 技术风险: 程序可能存在 bug,建议小额测试
- 市场风险: 极端市场条件下可能出现意外损失
请在充分理解风险的前提下使用本程序,投资有风险,入市需谨慎!
已配置的工具:
- ✅ Black: 代码自动格式化
- ✅ isort: 导入语句自动排序
- ✅ Flake8: 代码风格检查
- ✅ mypy: 静态类型检查
- ✅ Bandit: 安全漏洞扫描
- ✅ Pre-commit: Git 提交前自动检查
快速开始:
pip install -r requirements-dev.txt
pre-commit install
pre-commit run --all-filescd web
npm install
npm run build # 生成 web/dist,FastAPI 会自动托管只需 3 步:
-
创建适配器类
class BybitAdapter(BaseExchangeAdapter): # 实现抽象方法...
-
注册到工厂
ExchangeFactory.register_adapter(ExchangeType.BYBIT, BybitAdapter)
-
**完成!**无需修改其他代码
📖 详见: 多交易所架构设计
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 安装开发工具(参考上文“代码质量工具”中的快速开始命令)
- 编写代码并确保通过所有检查
- 提交更改 (
git commit -m 'feat: Add AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
代码质量要求:
- ✅ 通过 Black 格式化
- ✅ 通过 Flake8 检查
- ✅ 添加类型注解
- ✅ 包含单元测试
- ✅ 更新相关文档
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
