ricequant/rqalpha-mod-vnpy

CTP中午休市账户断线重连之后系统报错

handsomu opened this issue · 6 comments

image

初步怀疑是策略引擎一直在运行,CTP在中午休市时断线重连之后获取到当日所有trade,重复触发position计算逻辑。

@handsomu @Cuizi7 broker 在初始化的 account 的时候 已经初始化了对应的 backward_trade_set 触发trade event 的时候 应该判断一下 trade_id 是否在backward_trade_set 中 如果在的话 就不再触发该event。 不过这么来说,order怎么处理.... 😂😂😂

这块的 order 打算这么处理:

  • 维护一个订单对象的缓存
  • 发单的时候将订单对象缓存在上述缓存中
  • 收到订单回报的时候:
    • 若缓存中无该订单对象则创建并缓存之,若存在则读取之
    • 若订单对象的 order_status 为 pending_new (即首次收到该订单的回报)则发布 ORDER_PENDING_NEW 事件
    • 若订单回报中的 order_status 为订单对象的前置状态,则忽略该回报
    • 若订单回报中的 order_status 为订单对象的后置状态,则修改订单状态并发布对应事件

已尝试修复,明天交易时间我继续测试。

hzliu commented

@hzliu 现在在初始化阶段和账户短线重连的时候都是用的我自己写的类似 fast_forward 的逻辑,因为最早写这段逻辑的时候 rqalpha 还没有现在的 fast_forward,纯属历史原因。

master 分支已修复。