1.93K 浏览
0

api = TqApi(TqAccount(‘A安粮期货’,’ ‘,”),auth=TqAuth(“”, “”))
orders = api.get_order() #获取全部委托单
positions = api.get_position() #获取全部持仓
print(day_end )
#print(positions.pos)
#print(positions.items())
for k,v in positions.items():
        if v.pos: #净持仓不为0
            target_pos = TargetPosTask(api, k)
            target_pos.set_target_volume(0) #净持仓设为0
            api.wait_update()
api.close()

####这代码能平掉仓位,但最后会出错误提示: raise Exception(f”InsertOrderTask 执行超时,30s 内报单未执行完。此错误产生可能的原因:”Exception: InsertOrderTask 执行超时,30s 内报单未执行完。此错误产生可能的原因:可能是用户调用了 api.close() 之后,已经创建的 InsertOrderTask 无法正常结束。
要怎么解决呢?

ringo 已回答的问题 2021年7月5日
0

当你有targetpostask的任务未完成,且已经调用了api.close()后,会去尝试去撤销还未完成的targetpostask,但是如果此时正好临近收盘或者小节休息,则会导致撤单,程序会在30s之后报错

ringo 已回答的问题 2021年7月5日