这是一个基于 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
程序启动后将开始连接交易所、初始化状态并执行交易逻辑。
程序启动后,会自动运行一个 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 来改进项目。