-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Open
Description
问题描述
当 partial_close 被自动修正为全平仓时,actionRecord.Action 未同步更新,导致记录到日志的 action 与实际执行的 action 不一致。
复现步骤
- AI 决策
partial_close 80%(假设剩余仓位价值 < 10 USDT) executePartialCloseWithRecord检测到剩余仓位 < 10 USDT- 自动修正:
decision.Action = "close_long" - 调用
executeCloseLongWithRecord(decision, actionRecord) - 但
actionRecord.Action仍然是"partial_close"
影响
- 决策日志中记录
action: "partial_close",但实际执行的是全平仓 updateCacheFromDecision看到partial_close无法处理,导致缓存不更新openPositions状态未清理,可能导致后续决策错误
代码位置
文件: trader/auto_trader.go:1172-1178
// 当前代码
if positionSide == "LONG" {
decision.Action = "close_long"
log.Printf(" ✓ 已修正为: close_long")
return at.executeCloseLongWithRecord(decision, actionRecord)
}修复建议
// 修复后
if positionSide == "LONG" {
decision.Action = "close_long"
actionRecord.Action = "close_long" // ← 添加这行同步更新
log.Printf(" ✓ 已修正为: close_long")
return at.executeCloseLongWithRecord(decision, actionRecord)
} else {
decision.Action = "close_short"
actionRecord.Action = "close_short" // ← 添加这行同步更新
log.Printf(" ✓ 已修正为: close_short")
return at.executeCloseShortWithRecord(decision, actionRecord)
}优先级
- 严重程度: HIGH
- 影响范围: 所有被自动修正的 partial_close 交易
- 修复优先级: P1
相关 Issue
#<下一个 issue 编号> - 缓存主动维护暂不支持 partial_close
Metadata
Metadata
Assignees
Labels
No labels