完整的撤单逻辑算法
def OnTimer(context, timerid) :
if timerid == timer_order : # 如果触发卖开认沽委托订单定时器
iIsOrderRejected = False # 是否是废单判断
iIsCanCancel = False # 是否可撤
status_list = GetOrderStatus(g.order_SKPut_table, g.UID_SKPut) # 委托订单状态列表
if 33 in status_list : # 判断是否是废单
iIsOrderRejected = True # 是废单
else :
iIsOrderRejected = False # 不是废单
if (33 not in status_list) and (32 not in status_list) : # 判断是否是可撤单
iIsCanCancel = True # 是可撤单
else :
iIsCanCancel = False # 不是可撤单
if g.traded_SKPut_volumesum < g.lot : # 如果委托订单没有全部成交
if iIsOrderRejected == False : # 如果之前的卖开认沽委托订单是废单,则重新下单
g.UID_SKPut = QuickInsertOrder(context.myacc, \
g.code_put, 'sell', 'open', g.open_price_type, g.lot)
# 如果不是废单
elif iIsCanCancel == True : # 同时是可撤单,则撤单成功后重新发送委托单
g.UID_SKPut_CO = context.myacc.CancelOrder(context.myacc.GetOrder(g.UID_SKPut)) # 撤单
if g.UID_SKPut_CO == True : # 如果撤单成功,则重新下达委托订单
g.UID_SKPut = QuickInsertOrder(context.myacc, \
g.code_put, 'sell', 'open', g.open_price_type, g.lot)
else : # 如果委托订单全部成交
KillTimer(timer_order) # 销毁定时器
您尚未登录,请 登录 真格量化发表回复
为学有余力的同仁点赞!好样的!
good