auto_trade_sys/MARGIN_DISPLAY_FIX.md
薇薇安 11e3532ac3 a
2026-01-17 20:23:49 +08:00

2.5 KiB
Raw Blame History

保证金显示修复说明

问题描述

发现持仓单子显示保证金为 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 USDT4位小数

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 USDT4位小数 后端检查已存在新开仓会检查最小保证金要求5.0 USDT ⚠️ 旧数据可能显示为小保证金:这是正常的,建议手动平仓