# 保证金显示修复说明 ## 问题描述 发现持仓单子显示保证金为 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) ⚠️ **旧数据可能显示为小保证金**:这是正常的,建议手动平仓