VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 44
声望: 2

最近老是出现订单状态卡在提交中的情况,所以在process_order_event的时候把orderdata写到日志里了,结果发现这个处理的顺序有点问题。从代码来看,在报单的时候,首先会生成的是初始的OrderData,并调用一次on_order(),也就是这时process_order_event()收到的data状态为提交中,时间为None;之后收到的就是订单回报了,这部分处理的顺序没发现什么问题。

description

Member
avatar
加入于:
帖子: 44
声望: 2

融航报单的代码是这样的,难道是在self.reqOrderInsert(rohon_req, self.reqid)这里卡的太久,以至于已经收到了订单回报才执行到下一段self.gateway.on_order(order)?

def send_order(self, req: OrderRequest) -> str:

    self.order_ref += 1
    rohon_req: dict = {
        "InstrumentID": req.symbol,
        "ExchangeID": req.exchange.value,
        "LimitPrice": req.price,
        "VolumeTotalOriginal": int(req.volume),
        "OrderPriceType": ORDERTYPE_VT2ROHON.get(req.type, ""),
        "Direction": DIRECTION_VT2ROHON.get(req.direction, ""),
        "CombOffsetFlag": OFFSET_VT2ROHON.get(req.offset, ""),
        "OrderRef": str(self.order_ref),
        "InvestorID": self.userid,
        "UserID": self.userid,
        "BrokerID": self.brokerid,
        "CombHedgeFlag": THOST_FTDC_HF_Speculation,
        "ContingentCondition": THOST_FTDC_CC_Immediately,
        "ForceCloseReason": THOST_FTDC_FCC_NotForceClose,
        "IsAutoSuspend": 0,
        "TimeCondition": THOST_FTDC_TC_GFD,
        "VolumeCondition": THOST_FTDC_VC_$,
        "MinVolume": 1
    }

    if req.type == OrderType.FAK:
        rohon_req["OrderPriceType"] = THOST_FTDC_OPT_LimitPrice
        rohon_req["TimeCondition"] = THOST_FTDC_TC_IOC
        rohon_req["VolumeCondition"] = THOST_FTDC_VC_$
    elif req.type == OrderType.FOK:
        rohon_req["OrderPriceType"] = THOST_FTDC_OPT_LimitPrice
        rohon_req["TimeCondition"] = THOST_FTDC_TC_IOC
        rohon_req["VolumeCondition"] = THOST_FTDC_VC_CV

    self.reqid += 1
    self.reqOrderInsert(rohon_req, self.reqid)

    orderid: str = f"{self.frontid}_{self.sessionid}_{self.order_ref}"
    order: OrderData = req.create_order_data(orderid, self.gateway_name)
    self.gateway.on_order(order)

    return order.vt_orderid
Member
avatar
加入于:
帖子: 1700
声望: 122

建议去vnpy_rohon仓库开个issue,把这里的详细信息贴一下

另外有没有检查过主窗口【日志】区域,是否有什么连接断开之类的输出记录?

Member
avatar
加入于:
帖子: 44
声望: 2

MTF wrote:

建议去vnpy_rohon仓库开个issue,把这里的详细信息贴一下

另外有没有检查过主窗口【日志】区域,是否有什么连接断开之类的输出记录?

没有,都是正常交易的时候出现的,没出现断开

Member
avatar
加入于:
帖子: 5082
声望: 306

你vnpy_rohon的版本是?用station启动【交易】界面的右侧有报错信息输出吗?

Member
avatar
加入于:
帖子: 44
声望: 2

xiaohe wrote:

你vnpy_rohon的版本是?用station启动【交易】界面的右侧有报错信息输出吗?

vnpy是2.8的,vnpy_rohon后续没有手动升级过。我用的是脚本策略,就是出现这个问题之后get_order()得到的是初始的OrderData,此外没有任何报错

Member
avatar
加入于:
帖子: 1700
声望: 122

2.8版本太老了,请升级3.6试下吧

Member
avatar
加入于:
帖子: 5082
声望: 306

可能是收到了广期所合约但接口没提供枚举值支持导致底层报错了,建议还是升级到最新版再试试看

Member
avatar
加入于:
帖子: 44
声望: 2

MTF wrote:

2.8版本太老了,请升级3.6试下吧

有一些个性化的代码修改,目前用的比较稳定,不太好直接升级

Member
avatar
加入于:
帖子: 44
声望: 2

xiaohe wrote:

可能是收到了广期所合约但接口没提供枚举值支持导致底层报错了,建议还是升级到最新版再试试看

广期所枚举值很久之前就加上了,而且在广期所开始交易之前就有过这个问题,有点难搞

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】