mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-03 19:11:02 +08:00
## 改进分析 之前的修复V1只是防止负数(设为0),但不够彻底: - 场景:用户有1000 USDC,totalMarginUsed=1050 - V1结果:availableBalance = 0 - 问题:用户想开100 USDT仓位仍会失败 ## 根本原因 Hyperliquid的TotalMarginUsed计算方式与Binance不同: - 可能包含维持保证金要求 - 不能简单用 accountValue - totalMarginUsed ## 正确解决方案 使用Hyperliquid API提供的Withdrawable字段: - 这是官方计算的真实可提现余额 - 已考虑所有持仓风险和保证金要求 - 准确反映用户真实可用资金 ## 实现 1. **优先策略**:使用accountState.Withdrawable字段 2. **后备策略**:Withdrawable不可用时,使用计算值(防负数) 3. **完整日志**:清晰显示使用哪个数据源 ## 参考 - Hyperliquid API文档:withdrawable字段表示可提现余额 - CCXT issues #23997, #26671:类似问题讨论 - 推荐做法:free = withdrawable 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>