OpenOrder_CTP
CTP接口的二次封装,实现委托状态和成交的严格排序与缓存,还可以省心支持对接CTP之外的其他证券交易柜台,如LTS、QMT、UFT、TradeX等。
OpenOrder(CTP)版:是CTP,更省心更全面的API
注意: 目前并未支持所有的CTP API接口,仅支持Order Insert/Cancel委托指令。OpenOrder在内部进行委托查询,所以尚未开放提供委托、成交查询接口。
注意: 目前委托命令中,暂不支持UserForceClose、IsAutoSuspend、``ForceCloseReason`等属性。
注意: 为了在内部维护委托和成交、撤单的关联关系,OrderRef字段被用于存放ORRequestID,自行填入的值会被OpenOrder内部冲销。各个API函数参数nRequestID也被内部冲销。
注意:试用版本,每日撤单的nRequestID编号值不能超过 10。
注意:试用版本,仅提供Win64的Debug版本。
使用OpenOrder(CTP)替换原生CTP接口的使用方式:
- C++中include使用OpenOrder(CTP)提供的API头文件。
- 链接“OpenOrderd.lib”和“ctp_wrapperd.lib”。在运行时需要使用“OpenOrderd.dll”。
- 增加了namespace OpenOrder。
- 取消CreateFtdcTraderApi函数的入参,Init()增加参数,为pCounterConfig,请传入配置信息。
- 撤单时,仅需要在ReqOrderAction参数中。(暂不支持THOST_FTDC_AF_Modify)
- 其余基本无需改变(不支持的API接口请暂时隐去代码,或联系我进行添加)
内部延迟:30us (试用版 300us)。
主要特点:
使用CTP原生API接口,可以对接CTP柜台,也可以对接到其余的期货和证券交易接口,目前支持TradeX、LTS、QMT等。
OpenOrder在内部实现了委托状态管理,自动完成当日委托、成交的有序管理和缓存。
用户在使用OpenOrder之后,委托和成交回报严格按照如下顺序发生:
- 正报 - 已报 - 已成
- 正报 - 已报 - 已撤
- 正报 - 已报 - 部成 - 部成部撤
- 正报 - 废单(本地/柜台)
- 正报 - 已报 - 废单(交易所)
注意:成交回报总是在委托状态推送前。
您可以使用委托的唯一编号:ORRequestID,无需自行处理OrderRef、SessionID、FrontID等信息。如果是补单,则ORRequestID为负数。
所有ORRequestID的编号值的绝对值是单调递增的(不一定连续)。
撤单失败通过onRtnOrder即可得到状态变化。onErrRtnOrderCancel也有返回。
状态机
状态机定义如下图所示(废单、已撤、部成部撤、已成等四种为最终状态):
请移步github访问示例代码。
如需技术支持和咨询,请联系微信号: funrun2019(下方扫码)。