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

最近我的实盘策略在开盘发FAK单进行仓位调整时,出现了好几次重复下单的情况,排查之后发现是get_order()查询订单信息显示Status.SUBMITTING且get_trades()没有成交回报,所以没有能更新存储在本地文件中的仓位信息,之后导致重复下单。
我执行的整体逻辑是这样的:

while trading:
    if need_order:
        orders_list.append(order(...))
    sleep(1.5)
    get_orders(order_list)
    update_positions(...)
    orders_list=[]

是否是因为中间延迟比较大,我等待的时间不够长?但模拟盘相同的程序且等待时间更短没有出现这种情况,实盘上交所的品种也是正常的,唯独最近大商所品种频繁出现。然后我又检查了一下订单时间等信息,发现用get_order()获取到的time与快期显示的有很大差异,比如下图中本地记录下来的是21:00:04,快期中则是21:00:10,所以想请问一下这种情况怎么处理呢?
description

description

Super Moderator
avatar
加入于:
帖子: 529
声望: 43

Status是指委托的状态,一般有提交中、未成交、部分成交、全部成交、拒单、全部撤单这些状态。这些状态的更新是由交易所确定并推送的。
委托时间不同是因为这是两个委托状态不同。
你可以在get_order时查看一下订单状态,只有在全撤或者全部成交时才算这个委托结束了,不然之后还会有委托状态更新的。

Member
avatar
加入于:
帖子: 6
声望: 0

郭易燔 wrote:

Status是指委托的状态,一般有提交中、未成交、部分成交、全部成交、拒单、全部撤单这些状态。这些状态的更新是由交易所确定并推送的。
委托时间不同是因为这是两个委托状态不同。
你可以在get_order时查看一下订单状态,只有在全撤或者全部成交时才算这个委托结束了,不然之后还会有委托状态更新的。
好的谢谢,看来更新本地信息的时候得把没完成的订单再返回回来继续循环。只是比较纠结这个submitting的时长是受什么影响的,按理说2秒都够报单加成交了,延迟也应该没这么大吧...

Super Moderator
avatar
加入于:
帖子: 529
声望: 43

submitting时间应该和网络波动、交易所处理时延还有券商那边有关吧,毕竟只要收到交易所给回报,这边就会有推送。

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

沪公网安备 31011502017034号

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