# API密钥配置指南

## 错误代码 -2015 解决方案

如果遇到 `APIError(code=-2015): Invalid API-key, IP, or permissions for action` 错误，请按照以下步骤检查：

## 1. 检查API密钥状态

### 登录币安账户
1. 访问 [币安官网](https://www.binance.com) 或 [币安测试网](https://testnet.binancefuture.com)
2. 进入 **账户** → **API管理**

### 检查API密钥
- ✅ API密钥状态是否为 **启用**
- ✅ API密钥是否已过期
- ✅ API密钥是否被删除

## 2. 检查API密钥权限

### 必需权限
确保API密钥已启用以下权限：

- ✅ **启用读取** - 必须启用
- ✅ **启用合约交易** - 必须启用（这是关键！）
- ❌ **启用提币** - **不要启用**（安全考虑）

### 权限设置步骤
1. 在API管理页面，点击你的API密钥
2. 在权限设置中，确保勾选：
   - [x] 启用读取
   - [x] 启用合约交易
   - [ ] 启用提币（不要勾选）

## 3. 检查IP白名单设置

### 如果设置了IP限制
1. 在API管理页面查看 **IP访问限制**
2. 如果设置了IP白名单，需要添加当前服务器的IP地址
3. 或者选择 **无限制**（不推荐，安全性较低）

### 获取服务器IP
```bash
# 在服务器上执行
curl ifconfig.me
# 或
curl ipinfo.io/ip
```

## 4. 检查测试网/生产网配置

### 测试网 vs 生产网
- **测试网**：用于测试，不涉及真实资金
- **生产网**：真实交易环境

### 配置匹配
确保 `config.py` 中的配置与你的API密钥环境匹配：

```python
# 如果API密钥来自测试网
USE_TESTNET = True

# 如果API密钥来自生产网
USE_TESTNET = False
```

### 如何判断
- 测试网API密钥：在 [testnet.binancefuture.com](https://testnet.binancefuture.com) 创建
- 生产网API密钥：在 [www.binance.com](https://www.binance.com) 创建

## 5. 验证API密钥

### 测试连接
运行程序后，查看日志输出：

```
✓ 币安客户端连接成功 (测试网: False)
✓ API密钥权限验证通过
```

如果看到这些信息，说明API密钥配置正确。

## 6. 常见问题排查

### 问题1：连接成功但无法获取余额
**原因**：API密钥没有合约交易权限
**解决**：在币安API管理中启用"合约交易"权限

### 问题2：IP地址错误
**原因**：服务器IP不在白名单中
**解决**：添加服务器IP到白名单，或取消IP限制

### 问题3：测试网/生产网不匹配
**原因**：USE_TESTNET 配置与API密钥环境不一致
**解决**：检查并修改 config.py 中的 USE_TESTNET 设置

### 问题4：API密钥已过期
**原因**：API密钥设置了过期时间
**解决**：创建新的API密钥或延长过期时间

## 7. 安全建议

1. **不要启用提币权限** - 即使API密钥泄露，也无法提走资金
2. **使用IP白名单** - 限制API密钥只能从特定IP访问
3. **定期更换API密钥** - 建议每3-6个月更换一次
4. **不要在代码中硬编码密钥** - 使用环境变量
5. **不要将API密钥提交到Git** - 确保 .gitignore 包含 config.py

## 8. 测试网API密钥获取

### 步骤
1. 访问 [币安测试网](https://testnet.binancefuture.com)
2. 使用测试网账号登录（如果没有，先注册）
3. 进入 API管理 创建测试网API密钥
4. 在 config.py 中设置 `USE_TESTNET = True`

### 测试网特点
- 免费使用
- 虚拟资金
- 适合测试和开发
- 不影响真实账户

## 9. 生产网API密钥获取

### 步骤
1. 访问 [币安官网](https://www.binance.com)
2. 登录你的账户
3. 进入 **账户** → **API管理** → **创建API**
4. 选择权限：**启用读取** + **启用合约交易**
5. 设置IP白名单（推荐）
6. 在 config.py 中设置 `USE_TESTNET = False`

## 10. 验证配置

运行程序后，应该看到：

```
✓ 币安客户端连接成功 (测试网: False)
✓ API密钥权限验证通过
账户余额: 总余额 1000.00 USDT, 可用余额 1000.00 USDT
```

如果看到错误，请根据错误信息参考上述解决方案。
