撤单流程:
撤单是指客户将已报入CTP及交易所的单子申请撤销,流程图如下:

实盘流程展示:

撤单代码:
# 撤单
def cancelOrder(self, orderRef):
orderfield = tdapi.CThostFtdcInputOrderActionField()
orderfield.BrokerID = str(self.Account.broker_id) # 经纪公司代码
orderfield.UserID = str(self.Account.investor_id) # 用户代码
orderfield.InvestorID = str(self.Account.investor_id) # 投资者代码
orderfield.FrontID = g.frontID # 前置编号
orderfield.SessionID = g.sessionID # 会话编号
orderfield.InstrumentID = g.order_map[str(orderRef)].instrumentID # 合约代码
# 当前单号
orderfield.OrderRef = str(orderRef) # 报单引用
# 操作标志
orderfield.ActionFlag = '0'
ret = g.tduserapi.ReqOrderAction(orderfield, 0) # 发送请求
if ret == 0:
print('发送撤单成功!')
else:
print('发送撤单失败!')
judge_ret(ret)
return ret
官方文档参数讲解:

参数类型为CThostFtdcInputOrderActionField,这个类型有将近20个字段,同样也不都是必须的填写的。
目前撤单有两种方式:
第一种:
必填*1:FrontID + SessionID + OrderRef为一组,其中FrontID 和 SessionID在账号登录时获得

OrderRef是下单时自己设置,而且必须是递增的数字,下单时也会返回OrderRef
ret, orderRef = ctp_api.insertOrder('cs2401', 'sellopen', 2910, 1) # orderRef报单编号
第二种:
OrderSysID(报单编号),虽然官方推荐使用,但是OrderSysID是程序自动
本主题为课程学员专享,成为股票量化投资课程学员后可免费阅读
成为学员