183 lines
5.1 KiB
Markdown
183 lines
5.1 KiB
Markdown
# 币安自动交易系统 (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:初始版本,实现基础自动交易功能
|
||
|