Commit ad3d6b9
fix(trader): fix auto balance sync using totalEquity instead of availableBalance
修复 autoSyncBalanceIfNeeded() 的严重 bug:
问题:
- 旧逻辑使用 availableBalance 检测余额变化
- 当持有仓位时,availableBalance 会因保证金占用而减少
- 导致误判为"余额下降"并错误更新 initialBalance
示例场景:
1. initialBalance = 1000 USDT (total equity)
2. 开多单盈利 +100 → totalEquity = 1100, availableBalance = 900 (保证金占用)
3. 自动检查触发:(900 - 1000) / 1000 = -10% > 5% 阈值
4. 错误更新:initialBalance 从 1000 改成 900 ❌
5. 平仓后 P&L 计算彻底错误
修复:
✅ 使用 totalEquity = totalWalletBalance + totalUnrealizedProfit
✅ 准确反映账户真实价值,不受持仓影响
✅ 保留 availableBalance 作为 fallback
✅ 保持 5% 变化阈值(合理)
✅ 增强日志:显示钱包余额和未实现盈亏明细
影响范围:
- 自动余额同步机制(每 10 分钟检查一次)
- 所有交易所(Binance, Hyperliquid, Aster)
相关:
- 之前有人建议改成 > 50000 作为 workaround(禁用自动同步)
- 本次修复从根本上解决问题,无需修改阈值
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <[email protected]>1 parent f3a0fa6 commit ad3d6b9
1 file changed
+30
-13
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
303 | 303 | | |
304 | 304 | | |
305 | 305 | | |
306 | | - | |
| 306 | + | |
| 307 | + | |
307 | 308 | | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
314 | 322 | | |
315 | | - | |
316 | | - | |
317 | | - | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
318 | 335 | | |
319 | 336 | | |
320 | 337 | | |
| |||
347 | 364 | | |
348 | 365 | | |
349 | 366 | | |
350 | | - | |
351 | | - | |
| 367 | + | |
| 368 | + | |
352 | 369 | | |
353 | 370 | | |
354 | 371 | | |
| |||
375 | 392 | | |
376 | 393 | | |
377 | 394 | | |
378 | | - | |
| 395 | + | |
379 | 396 | | |
380 | 397 | | |
381 | 398 | | |
| |||
0 commit comments