Skip to content

[BUG] max position逻辑有问题 平仓信号没从服务器返回 调仓显示仓满 #1282

@MrD599

Description

@MrD599

vibe coding修了一下

🛠️ 解决方案:引入“预期净持仓”逻辑

为了彻底解决这个问题,我已经在 trader/auto_trader.go 中重构了风控检查逻辑。

修复核心逻辑:

  1. 在循环内追踪成功指令:在每个交易周期(Cycle)内,增加一个 successfulClosesInCycle 计数器。
  2. 逻辑预减免:当系统执行“先平后开”时,如果平仓指令发送成功,计数器加 1。
  3. 计算净持仓(Net Position):后续执行开仓风控检查时,不再死扣 GetPositions() 返回的陈旧数据,而是使用:
    净持仓数 = 当前实际持仓数 - 本周期内已成功发送平仓指令的数量
  4. 容错处理:如果由于 API 延迟 GetPositions() 还没更新,预减逻辑会自动抵消掉这部分滞后,确保开仓指令能顺利发给交易所。

💻 代码变更点

  • enforceMaxPositions:现在接受一个 successfulClosesInCycle 参数,用于计算 netPositionCount。
  • runCycle:在循环执行决策时,实时更新该计数器并传递给执行函数。
  • executeOpenLong/ShortWithRecord:更新了函数签名以支持该逻辑。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions