# 币安自动交易系统 (Binance Automated Trading System) 基于币安API的Python自动交易系统,实现自动发现涨跌幅最大的货币对并执行交易策略。 ## 功能特性 1. **自动市场扫描**:每5分钟扫描所有USDT永续合约,发现涨跌幅最大的前10个货币对 2. **智能交易**:顺着波动方向自动下单(涨幅做多,跌幅做空) 3. **严格仓位控制**: - 单笔最大仓位:账户余额的5% - 总仓位上限:账户余额的30% - 单笔最小仓位:账户余额的1% 4. **风险控制**: - 自动止损:3% - 自动止盈:5% - 成交量过滤:只交易成交量大的币对 - 趋势确认:结合多时间周期确认趋势 5. **实时监控**:持续监控持仓,自动执行止损止盈 ## 项目结构 ``` auto_trade_sys/ ├── config.py # 配置文件(API密钥、交易参数) ├── binance_client.py # 币安客户端封装 ├── market_scanner.py # 市场扫描器 ├── risk_manager.py # 风险管理模块 ├── position_manager.py # 仓位管理模块 ├── strategy.py # 交易策略 ├── main.py # 主程序入口 ├── requirements.txt # Python依赖 └── README.md # 项目说明 ``` ## 安装步骤 ### 1. 安装Python依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置API密钥 有两种方式配置API密钥: **方式1:环境变量(推荐)** ```bash export BINANCE_API_KEY="your_api_key" export BINANCE_API_SECRET="your_api_secret" export USE_TESTNET="True" # 测试网模式,生产环境设为False ``` **方式2:直接修改 config.py** 编辑 `config.py` 文件,填入你的API密钥: ```python BINANCE_API_KEY = 'your_api_key' BINANCE_API_SECRET = 'your_api_secret' USE_TESTNET = True # 测试网模式 ``` **⚠️ 重要:API密钥权限配置** 确保你的API密钥已启用以下权限: - ✅ **启用读取** - 必须启用 - ✅ **启用合约交易** - 必须启用(关键!) - ❌ **启用提币** - 不要启用(安全考虑) 如果遇到 `APIError(code=-2015)` 错误,请查看 [API_KEY_SETUP.md](API_KEY_SETUP.md) 获取详细解决方案。 ### 3. 调整交易参数(可选) 编辑 `config.py` 中的 `TRADING_CONFIG` 字典,根据你的需求调整参数: ```python TRADING_CONFIG = { 'MAX_POSITION_PERCENT': 0.05, # 单笔最大仓位:5% 'MAX_TOTAL_POSITION_PERCENT': 0.30, # 总仓位上限:30% 'MIN_CHANGE_PERCENT': 2.0, # 最小涨跌幅阈值:2% 'STOP_LOSS_PERCENT': 0.03, # 止损:3% 'TAKE_PROFIT_PERCENT': 0.05, # 止盈:5% # ... 更多参数 } ``` ## 使用方法 ### 启动交易系统 ```bash python main.py ``` ### 停止交易系统 按 `Ctrl+C` 停止程序。 ## 交易策略说明 ### 1. 市场扫描 - 每5分钟扫描一次市场 - 获取所有USDT永续合约交易对 - 计算5分钟涨跌幅 - 过滤条件: - 涨跌幅 >= 2% - 24小时成交量 >= 1000万USDT - 选择涨跌幅绝对值最大的前10个货币对 ### 2. 交易执行 - **做多**:涨幅 > 阈值时买入 - **做空**:跌幅 > 阈值时卖出 - 默认杠杆:10倍 - 使用市价单快速成交 ### 3. 风险控制 - **仓位控制**:严格限制单笔和总仓位 - **止损止盈**:自动设置止损和止盈价格 - **成交量确认**:只交易成交量大的币对 - **趋势确认**:结合15分钟K线确认趋势 ### 4. 持仓管理 - 实时监控持仓价格 - 自动触发止损止盈 - 定期打印持仓摘要 ## 注意事项 ⚠️ **重要提示**: 1. **测试网模式**:首次使用建议开启测试网模式(`USE_TESTNET=True`)进行测试 2. **API权限**:确保API密钥具有合约交易权限,但**不要**开启提币权限 3. **资金安全**:建议先用小额资金测试,确认策略符合预期后再增加资金 4. **风险提示**:加密货币交易存在高风险,可能导致资金损失,请谨慎使用 5. **网络稳定**:确保网络连接稳定,避免因网络问题导致订单异常 ## 日志 程序运行日志会同时输出到: - 控制台(标准输出) - 日志文件:`trading_bot.log` 日志级别可通过环境变量 `LOG_LEVEL` 设置(默认:INFO) ## 依赖库 - `python-binance==1.0.19`:币安API客户端 - `websocket-client==1.6.1`:WebSocket支持 - `aiohttp==3.9.1`:异步HTTP客户端 ## 常见问题 ### Q: 如何查看当前持仓? A: 程序运行时会定期打印持仓摘要,包含持仓数量、盈亏等信息。 ### Q: 如何修改扫描间隔? A: 修改 `config.py` 中的 `SCAN_INTERVAL` 参数(单位:秒)。 ### Q: 支持其他交易所吗? A: 当前版本仅支持币安,如需支持其他交易所,可以修改 `binance_client.py` 或使用 `ccxt` 库。 ### Q: 如何回测策略? A: 当前版本不支持回测,建议使用币安测试网进行实盘测试。 ## 许可证 本项目仅供学习和研究使用,使用者需自行承担交易风险。 ## 更新日志 - 2026-01-13:初始版本,实现基础自动交易功能