78 lines
2.5 KiB
Markdown
78 lines
2.5 KiB
Markdown
# 保证金显示修复说明
|
||
|
||
## 问题描述
|
||
|
||
发现持仓单子显示保证金为 0.00 USDT,但实际有持仓:
|
||
- 交易对:XTZUSDT
|
||
- 数量:0.1000
|
||
- 入场价:0.6120
|
||
- 杠杆:20x
|
||
- **实际保证金**:0.1000 × 0.6120 / 20 = 0.00306 USDT
|
||
- **显示保证金**:0.00 USDT(因为使用 `toFixed(2)` 格式化)
|
||
|
||
## 问题原因
|
||
|
||
1. **前端显示问题**:使用 `toFixed(2)` 格式化保证金,当保证金小于 0.01 USDT 时,会显示为 0.00
|
||
2. **可能的历史数据**:这个单子可能是在更新配置(MIN_MARGIN_USDT: 0.5 → 5.0)之前开的,当时允许更小的保证金
|
||
|
||
## 修复内容
|
||
|
||
### 1. 前端显示优化
|
||
|
||
**修改文件**:
|
||
- `frontend/src/components/StatsDashboard.jsx`
|
||
- `frontend/src/components/TradeList.jsx`
|
||
|
||
**修改逻辑**:
|
||
- 如果保证金 >= 0.01 USDT,使用 `toFixed(2)` 显示(保留2位小数)
|
||
- 如果保证金 < 0.01 USDT,使用 `toFixed(4)` 显示(保留4位小数)
|
||
|
||
**修改位置**:
|
||
1. 持仓列表中的保证金显示
|
||
2. 止损止盈金额显示
|
||
3. 交易列表中的保证金显示
|
||
|
||
### 2. 后端检查(已存在)
|
||
|
||
后端已经有最小保证金检查:
|
||
- `trading_system/risk_manager.py` - `calculate_position_size()` 方法
|
||
- `trading_system/binance_client.py` - `place_order()` 方法
|
||
|
||
**检查逻辑**:
|
||
- 如果保证金 < MIN_MARGIN_USDT(当前为 5.0 USDT),会:
|
||
1. 尝试增加仓位价值以满足最小保证金要求
|
||
2. 如果账户余额不足,拒绝开仓
|
||
|
||
## 验证方法
|
||
|
||
### 1. 检查新开仓单子
|
||
- 新开仓的单子保证金应该 >= 5.0 USDT
|
||
- 如果看到保证金 < 5.0 USDT 的新单子,说明检查逻辑有问题
|
||
|
||
### 2. 检查旧数据
|
||
- 旧数据可能保证金很小(< 5.0 USDT),这是正常的
|
||
- 这些单子会显示为 0.00XX USDT(4位小数)
|
||
|
||
### 3. 检查日志
|
||
查看开仓日志,应该看到:
|
||
```
|
||
✓ XTZUSDT 仓位计算成功: X.XXXX
|
||
(仓位价值: XX.XX USDT,
|
||
名义价值: XX.XX USDT,
|
||
保证金: X.XXXX USDT, 杠杆: 20x)
|
||
```
|
||
|
||
如果保证金 < 5.0 USDT,应该看到警告并拒绝开仓。
|
||
|
||
## 建议
|
||
|
||
1. **平仓旧的小保证金单子**:如果看到保证金 < 5.0 USDT 的持仓,建议手动平仓
|
||
2. **检查配置**:确保 `MIN_MARGIN_USDT` 配置为 5.0 USDT
|
||
3. **监控新开仓**:观察新开仓的单子,确保保证金 >= 5.0 USDT
|
||
|
||
## 总结
|
||
|
||
✅ **前端显示已优化**:小保证金会显示为 0.00XX USDT(4位小数)
|
||
✅ **后端检查已存在**:新开仓会检查最小保证金要求(5.0 USDT)
|
||
⚠️ **旧数据可能显示为小保证金**:这是正常的,建议手动平仓
|