CTP-API开发系列之七:报撤单及回报顺序

本文详细介绍了CTP-API中报单、撤单操作及相关回报机制,包括RequestID和OrderRef的重要性,以及各种报单状态回报、成交回报和错误响应的处理。

前情回顾

CTP-API开发系列之一:各版本更新说明(持续更新)
CTP-API开发系列之二:问题汇总(持续更新)
CTP-API开发系列之三:柜台系统简介
CTP-API开发系列之四:接口对接准备
CTP-API开发系列之五:SimNow环境介绍
CTP-API开发系列之六:交易登录及查询流程

相关函数

/// 1.报单录入请求
virtual int ReqOrderInsert(CThostFtdcInputOrderField *pInputOrder, int nRequestID) = 0;
/// 2.报单失败响应
virtual void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
/// 3.报单录入错误回报
virtual void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) {};

/// 4.报单操作请求(撤单)
virtual int ReqOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, int nRequestID) = 0;
/// 5.报单操作请求响应
virtual void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
/// 6.报单操作错误回报
virtual void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) {};

/// 7.报单回报通知(私有流回报)
virtual void OnRtnOrder(CThostFtdcOrderField *pOrder) {};
/// 8.成交回报通知,报单发出后有成交则通过此接口返回(私有流回报)
virtual void OnRtnTrade(CThostFtdcTradeField *pTrade) {};

相关术语

报单回报

指报单的状态回报,有未知单报单回报、未成交报单回报、部分成交报单回报、全部成交报单回报和撤单回报。对应回调函数OnRtnOrder,以OrderStatus字段区分。

成交回报

指报单成交后推送的成交回报,对应回调函数OnRtnTrade。

错单响应

指报单被CTP拒绝后返回的响应通知,对应回调函数OnRspOrderInsert,其中ErrorID和ErrorMsg指明了错误原因。

错单回报

指报单被CTP或交易所拒绝后的报单的状态回报。对应回调函数OnErrRtnOrderInsert

重要序号

RequestID

每个请求函数都有一个RequestID,由客户端自行维护,ReqOrderInsert中的RequestID与OnRtnOrder中的相对应,可以用于跟踪报单回报的整个生命周期,但无法跟踪成交回报,因为成交回报里没有这个字段。

FrontID+SessionID

CTP-API建立的是TCP长链接,通过这两个字段就可以区分不同的链接,这两个字段由CTP柜台系统生成,并在登录成功后通过OnRspUserLogin函数返回给用户。

///前置编号
TThostFtdcFrontIDType FrontID;
///会话编号
TThostFtdcSessionIDType SessionID;

OrderRef

在报单录入请求的另一个参数中pInputOrder,填入报单引用字段的值OrderRef(由客户端自行维护),在通知函数的结构体中会带回来,这样就可以与请求关联上了。

FrontID + SessionID + OrderRef 

当报单报入CTP后,这组序号可以唯一定位一笔报单。可以用于跟踪报单回报的整个生命周期,但无法跟踪成交回报(OnRtnTrade),因为成交回报里没有这组序号。

ExchangeID + TraderID + OrderLocalID

当报单被CTP接受后,系统会分配OrderLocalID并发往交易所,这组序号可以用于跟踪此后报单的生命周期,包括报单回报和成交回报。

ExchangeID + OrderSysID

当报单被交易所接受后,交易所系统会分配OrderSysID并给CTP推送报单回报,这组序号可以用于跟踪此后报单的生命周期,包括报单回报和成交回报。

当报单被交易所拒绝后,交易所不会分配OrderSysID,此时仍要使用【FrontID + SessionID + OrderRef】和【ExchangeID + OrderSysID】 跟踪报单。

报单场景

1.报单某个合约,报入1手,到交易所先未成交,后全部成交1手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交) 此时CTP接收到交易所的成交回报和全部成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (全部成交)
OnRtnTrade

2.报单某个合约,报入1手,到交易所先未成交,然后撤单1手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder(未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder(未成交)

撤单:ReqOrderAction     此时CTP接收到交易所的撤单报单回报
回调顺序:
OnRtnOrder(未成交)
OnRtnOrder(已撤单)

3.报单某个合约,报入10手,到交易所先未成交,然后成交3手,然后剩余全部成交7手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单) 此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交) 此时CTP接收到交易所的成交回报和部分成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (部分成交)

OnRtnTrade          此时CTP接收到交易所的成交回报和全部成交报单回报
OnRtnOrder (部分成交)
OnRtnOrder (全部成交)
OnRtnTrade

4.报单某个合约,报入10手,到交易所先未成交,然后成交4手,然后剩余全部撤单6手。

报单:ReqOrderInsert
回调顺序:
OnRtnOrder (未知单)此时CTP接收到交易所的未成交报单回报
OnRtnOrder (未成交)此时CTP接收到交易所的成交回报和部分成交报单回报
OnRtnOrder (未成交)
OnRtnOrder (部分成交)
OnRtnTrade

撤单:ReqOrderAction
此时CTP接收到交易所的撤单回报
OnRtnOrder(部分成交)
OnRtnOrder(已撤单)

5.对一笔已经撤单的委托单再次撤单。

对一笔已撤单再次撤单
ReqOrderAction

触发撤单错误响应
OnRspOrderAction (CTP:报单已全成交或已撤销,不能再撤)
触发撤单错误回报
OnErrRtnOrderAction (CTP:报单已全成交或已撤销,不能再撤)

6.对一笔未成交委托进行撤单,因为委托号填写错误导致撤单失败

撤一笔不存在的委托
ReqOrderAction

触发撤单错误响应(CTP:撤单找不到相应报单)
OnRspOrderAction
触发撤单错误回报
OnErrRtnOrderAction (CTP:撤单找不到相应报单)
特别声明:标价仅为视频价格(为避免不必要的纠纷,请详细了解清楚后再拍!!!)特别声明:标价仅为视频价格(为避免不必要的纠纷,请详细了解清楚后再拍!!!)特别声明:标价仅为视频价格(为避免不必要的纠纷,请详细了解清楚后再拍!!!) 获取文档和源码请加作者vx:X_Trader_Lab适合人群X-Trader:从CTP-API期货日内策略,适合对期货期权日内交易感兴趣的同学。 学习目标本课程体系分成三个子课程(本子课程为课程体系的第一部分):本课程体系分成三个子课程(本子课程为课程体系的第一部分):本课程体系分成三个子课程(本子课程为课程体系的第一部分):1.CTP-API交易接口深度解析2.深度探索X-Trader交易框架3.期货日内策略的原理及框架(本子课程为课程体系的第一部分) 详细介绍X-Trader 是一个基于C++ 的,适应全市场全品种交易的跨平台的极简量化交易框架,X-Trader 支持用户使用C++ 构 建各种类型的量化交易策略程序, 并提供包含历史数据-实时数据-开发调试-模拟交易-实盘交易-运行监控-风险 管理的一站式解决方案。本课程旨在帮助同学们从0 到1,掌握期货日内交易策略框架的核心技术。 课程大纲1.1 CTP1.2 API1.3 开启程序化交易之旅1.4 CTP-API 的基本架构及初始化1.5 行情接口开发1.6 行情数据处理1.7 看穿式监管评测1.8 交易接口开发1.9 报单1.10 报单回报1.11 撤单1.12 成交回报1.13 回调规则1.14 查询持仓1.15 更新持仓1.16 查询保证金率和手续费率1.17 规避自成交1.18 报单流控、查询流控和会话数控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值