最近老是出现订单状态卡在提交中的情况,所以在process_order_event的时候把orderdata写到日志里了,结果发现这个处理的顺序有点问题。从代码来看,在报单的时候,首先会生成的是初始的OrderData,并调用一次on_order(),也就是这时process_order_event()收到的data状态为提交中,时间为None;之后收到的就是订单回报了,这部分处理的顺序没发现什么问题。
最近老是出现订单状态卡在提交中的情况,所以在process_order_event的时候把orderdata写到日志里了,结果发现这个处理的顺序有点问题。从代码来看,在报单的时候,首先会生成的是初始的OrderData,并调用一次on_order(),也就是这时process_order_event()收到的data状态为提交中,时间为None;之后收到的就是订单回报了,这部分处理的顺序没发现什么问题。
融航报单的代码是这样的,难道是在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
建议去vnpy_rohon仓库开个issue,把这里的详细信息贴一下
另外有没有检查过主窗口【日志】区域,是否有什么连接断开之类的输出记录?
MTF wrote:
建议去vnpy_rohon仓库开个issue,把这里的详细信息贴一下
另外有没有检查过主窗口【日志】区域,是否有什么连接断开之类的输出记录?
没有,都是正常交易的时候出现的,没出现断开
你vnpy_rohon的版本是?用station启动【交易】界面的右侧有报错信息输出吗?
xiaohe wrote:
你vnpy_rohon的版本是?用station启动【交易】界面的右侧有报错信息输出吗?
vnpy是2.8的,vnpy_rohon后续没有手动升级过。我用的是脚本策略,就是出现这个问题之后get_order()得到的是初始的OrderData,此外没有任何报错
2.8版本太老了,请升级3.6试下吧
可能是收到了广期所合约但接口没提供枚举值支持导致底层报错了,建议还是升级到最新版再试试看