这是一个基于 Python 的自动化交易程序,专为币安 (Binance) 交易所的 BNB/USDT 交易对设计。该程序采用网格交易策略,旨在通过动态调整网格和仓位来捕捉市场波动,并内置风险管理机制。
- 自动化网格交易: 针对 BNB/USDT 交易对执行网格买卖策略。
- 动态网格调整: 根据市场波动率自动调整网格大小 (
config.py中的GRID_PARAMS)。 - 风险管理:
- 最大回撤限制 (
MAX_DRAWDOWN) - 每日亏损限制 (
DAILY_LOSS_LIMIT) - 最大仓位比例限制 (
MAX_POSITION_RATIO)
- 最大回撤限制 (
- Web 用户界面: 提供一个简单的 Web 界面 (通过
web_server.py),用于实时监控交易状态、账户信息、订单和调整配置。 - 状态持久化: 将交易状态保存到
data/目录下的 JSON 文件中,以便重启后恢复。 - 通知推送: 可通过 PushPlus 发送重要事件和错误通知 (
PUSHPLUS_TOKEN)。 - 日志记录: 详细的运行日志记录在
trading_system.log文件中。
- Python 3.8+
- 依赖库见
requirements.txt文件。
-
克隆仓库:
git clone <你的仓库HTTPS或SSH地址> cd GridBNB-USDT
-
创建并激活虚拟环境:
- Windows:
python -m venv .venv .\.venv\Scripts\activate
- Linux / macOS:
python3 -m venv .venv source .venv/bin/activate
- Windows:
-
安装依赖:
pip install -r requirements.txt
-
创建
.env文件: 在项目根目录下创建一个名为.env的文件。 -
配置环境变量: 在
.env文件中添加以下必要的环境变量,并填入你的信息:# 币安 API (必须) BINANCE_API_KEY=YOUR_BINANCE_API_KEY BINANCE_API_SECRET=YOUR_BINANCE_API_SECRET # PushPlus Token (可选, 用于消息推送) PUSHPLUS_TOKEN=YOUR_PUSHPLUS_TOKEN # 初始设置 (可选, 影响首次运行和统计) INITIAL_PRINCIPAL=1000.0 # 你的初始总资产 (USDT) INITIAL_BASE_PRICE=600.0 # 你认为合适的初始基准价格 (用于首次启动确定方向)
- 重要: 确保你的币安 API Key 具有现货交易权限,但不要开启提现权限。
-
调整交易参数 (可选): 你可以根据自己的策略需求修改
config.py文件中的参数,例如:SYMBOL: 交易对 (默认为 'BNB/USDT')INITIAL_GRID: 初始网格大小 (%)MIN_TRADE_AMOUNT: 最小交易金额 (USDT)MAX_POSITION_RATIO,MIN_POSITION_RATIO: 最大/最小仓位比例- 风险参数 (
MAX_DRAWDOWN,DAILY_LOSS_LIMIT) - 波动率与网格对应关系 (
GRID_PARAMS['volatility_threshold'])
在激活虚拟环境的项目根目录下运行主程序:
python main.py程序启动后将开始连接交易所、初始化状态并执行交易逻辑。
部署前请修改 .env 文件的 环境变量
# 拉取代码
git clone https://github.com/EBOLABOY/GridBNB-USDT
# 部署镜像
docker-compose up -d程序启动后,会自动运行一个 Web 服务器。你可以通过浏览器访问以下地址来监控和管理交易机器人:
http://127.0.0.1:8080
注意: 端口号 (8080) 可能在 web_server.py 中定义,如果无法访问请检查该文件。
Web 界面可以让你查看当前状态、账户余额、持仓、挂单、历史记录,并可能提供一些手动操作或配置调整的功能。
程序的运行日志会输出到控制台,并同时记录在项目根目录下的 trading_system.log 文件中。
- 交易风险: 所有交易决策均由程序自动执行,但市场存在固有风险。请务必了解策略原理和潜在风险,并自行承担交易结果。不建议在未充分理解和测试的情况下投入大量资金。
- API Key 安全: 妥善保管你的 API Key 和 Secret,不要泄露给他人。
- 配置合理性: 确保
config.py和.env中的配置符合你的预期和风险承受能力。
欢迎提交 Pull Requests 或 Issues 来改进项目。