CTP-API开发系列之各版本更新说明(持续更新)(值得收藏)
- CTP-API开发系列之各版本更新说明(持续更新)(值得收藏)
- v6.7.2
- v6.7.1
- v6.7.0(推荐,主用)
- v6.6.9
- v6.6.8
- v6.6.7
- v6.6.5
CTP-API开发系列之各版本更新说明(持续更新)(值得收藏)
从事CTP-API开发多年,自CTP穿透式监管报送信息版本(v6.3.19)之后,近两年能够明显感觉到,CTP-API升级的频率提高了不少,对于我们这些使用API进行程序化交易的下游来说,也需要时刻关注API的变动。
比如v6.7.0版本,也是目前我们生产环境使用的版本,支持查询流量压缩lz4算法,升级之后网络带宽降低了不少,我也通过tcpdump抓包,与6.6.8版本进行对比分析(详细内容见v6.7.0),对于高频程序化交易者,该版本是有必要升的(前提是对应的期货公司柜台程序也进行了更新,需要咨询自己开户的期货公司)。
后面会持续关注CTP-API新版本的更新内容,并及时更新该文章,欢迎大家关注。
v6.7.2
此版本为支持郑商所附加保证金算法调整、中金所新组保RCAMS和大商所新组保Rule业务而变更,新增12个交易查询接口
1、新增接口:SPBM附加跨品种抵扣参数查询。(1)查询请求///SPBM附加跨品种抵扣参数查询virtual int ReqQrySPBMAddOnInterParameter(CThostFtdcQrySPBMAddOnInterParameterField *pQrySPBMAddOnInterParameter, int nRequestID) = 0;(2)查询响应///SPBM附加跨品种抵扣参数查询响应virtual void OnRspQrySPBMAddOnInterParameter(CThostFtdcSPBMAddOnInterParameterField *pSPBMAddOnInterParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 2、新增接口:RCAMS产品组合信息查询。(1)查询请求///RCAMS产品组合信息查询virtual int ReqQryRCAMSCombProductInfo(CThostFtdcQryRCAMSCombProductInfoField *pQryRCAMSCombProductInfo, int nRequestID) = 0;(2)查询响应///RCAMS产品组合信息查询响应virtual void OnRspQryRCAMSCombProductInfo(CThostFtdcRCAMSCombProductInfoField *pRCAMSCombProductInfo, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};3、新增接口:RCAMS同合约风险对冲参数查询。(1)查询请求///RCAMS同合约风险对冲参数查询virtual int ReqQryRCAMSInstrParameter(CThostFtdcQryRCAMSInstrParameterField *pQryRCAMSInstrParameter, int nRequestID) = 0;(2)查询响应///RCAMS同合约风险对冲参数查询响应virtual void OnRspQryRCAMSInstrParameter(CThostFtdcRCAMSInstrParameterField *pRCAMSInstrParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}; 4、新增接口:RCAMS品种内风险对冲参数查询。(1)查询请求///RCAMS品种内风险对冲参数查询virtual int ReqQryRCAMSIntraParameter(CThostFtdcQryRCAMSIntraParameterField *pQryRCAMSIntraParameter, int nRequestID) = 0;(2)查询响应///RCAMS品种内风险对冲参数查询响应virtual void OnRspQryRCAMSIntraParameter(CThostFtdcRCAMSIntraParameterField *pRCAMSIntraParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};5、新增接口:RCAMS跨品种风险折抵参数查询。(1)查询请求///RCAMS跨品种风险折抵参数查询virtual int ReqQryRCAMSInterParameter(CThostFtdcQryRCAMSInterParameterField *pQryRCAMSInterParameter, int nRequestID) = 0;(2)查询响应///RCAMS跨品种风险折抵参数查询响应virtual void OnRspQryRCAMSInterParameter(CThostFtdcRCAMSInterParameterField *pRCAMSInterParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};6、新增接口:RCAMS空头期权风险调整参数查询。(1)查询请求///RCAMS空头期权风险调整参数查询virtual int ReqQryRCAMSShortOptAdjustParam(CThostFtdcQryRCAMSShortOptAdjustParamField *pQryRCAMSShortOptAdjustParam, int nRequestID) = 0;(2)查询响应///RCAMS空头期权风险调整参数查询响应virtual void OnRspQryRCAMSShortOptAdjustParam(CThostFtdcRCAMSShortOptAdjustParamField *pRCAMSShortOptAdjustParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};7、新增接口:RCAMS策略组合持仓查询。(1)查询请求///RCAMS策略组合持仓查询virtual int ReqQryRCAMSInvestorCombPosition(CThostFtdcQryRCAMSInvestorCombPositionField *pQryRCAMSInvestorCombPosition, int nRequestID) = 0;(2)查询响应///RCAMS策略组合持仓查询响应virtual void OnRspQryRCAMSInvestorCombPosition(CThostFtdcRCAMSInvestorCombPositionField *pRCAMSInvestorCombPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};8、新增接口:投资者品种RCAMS保证金查询。(1)查询请求///投资者品种RCAMS保证金查询virtual int ReqQryInvestorProdRCAMSMargin(CThostFtdcQryInvestorProdRCAMSMarginField *pQryInvestorProdRCAMSMargin, int nRequestID) = 0;(2)查询响应///投资者品种RCAMS保证金查询响应virtual void OnRspQryInvestorProdRCAMSMargin(CThostFtdcInvestorProdRCAMSMarginField *pInvestorProdRCAMSMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};9、新增接口:RULE合约保证金参数查询。(1)查询请求///RULE合约保证金参数查询virtual int ReqQryRULEInstrParameter(CThostFtdcQryRULEInstrParameterField *pQryRULEInstrParameter, int nRequestID) = 0;(2)查询响应///RULE合约保证金参数查询响应virtual void OnRspQryRULEInstrParameter(CThostFtdcRULEInstrParameterField *pRULEInstrParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};10、新增接口:RULE品种内对锁仓折扣参数查询。(1)查询请求///RULE品种内对锁仓折扣参数查询virtual int ReqQryRULEIntraParameter(CThostFtdcQryRULEIntraParameterField *pQryRULEIntraParameter, int nRequestID) = 0;(2)查询响应///RULE品种内对锁仓折扣参数查询响应virtual void OnRspQryRULEIntraParameter(CThostFtdcRULEIntraParameterField *pRULEIntraParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};11、新增接口:RULE跨品种抵扣参数查询。(1)查询请求///RULE跨品种抵扣参数查询virtual int ReqQryRULEInterParameter(CThostFtdcQryRULEInterParameterField *pQryRULEInterParameter, int nRequestID) = 0;(2)查询响应///RULE跨品种抵扣参数查询响应virtual void OnRspQryRULEInterParameter(CThostFtdcRULEInterParameterField *pRULEInterParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};12、新增接口:投资者产品RULE保证金查询。(1)查询请求///投资者产品RULE保证金查询virtual int ReqQryInvestorProdRULEMargin(CThostFtdcQryInvestorProdRULEMarginField *pQryInvestorProdRULEMargin, int nRequestID) = 0;(2)查询响应///投资者产品RULE保证金查询响应virtual void OnRspQryInvestorProdRULEMargin(CThostFtdcInvestorProdRULEMarginField *pInvestorProdRULEMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
v6.7.1
此版本为支持上期所SPMM新组保业务而变更,新增4个交易查询接口。为支持大商所GIS属性交易指令,报价接口ReqQuoteInsert新增TimeCondition字段。GIS属性对应THOST_FTDC_TC_GFS枚举值。该业务交易所尚未上线,待交易所上线后可进行申报。
1.1.新增接口:投资者商品组SPMM记录查询
(1)查询请求
///投资者商品组SPMM记录查询
virtual int ReqQryInvestorCommoditySPMMMargin(CThostFtdcQryInvestorCommoditySPMMMarginField *pQryInvestorCommoditySPMMMargin, int nRequestID) = 0;(2)查询响应
///投资者商品组SPMM记录查询响应
virtual void OnRspQryInvestorCommoditySPMMMargin(CThostFtdcInvestorCommoditySPMMMarginField *pInvestorCommoditySPMMMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.2.新增接口:投资者商品群SPMM记录查询
(1)查询请求
///投资者商品群SPMM记录查询
virtual int ReqQryInvestorCommodityGroupSPMMMargin(CThostFtdcQryInvestorCommodityGroupSPMMMarginField *pQryInvestorCommodityGroupSPMMMargin, int nRequestID) = 0;(2)查询响应
///投资者商品群SPMM记录查询响应
virtual void OnRspQryInvestorCommodityGroupSPMMMargin(CThostFtdcInvestorCommodityGroupSPMMMarginField *pInvestorCommodityGroupSPMMMargin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.3.新增接口:SPMM合约参数查询
(1)查询请求
///SPMM合约参数查询
virtual int ReqQrySPMMInstParam(CThostFtdcQrySPMMInstParamField *pQrySPMMInstParam, int nRequestID) = 0;(2)查询响应
///SPMM合约参数查询响应
virtual void OnRspQrySPMMInstParam(CThostFtdcSPMMInstParamField *pSPMMInstParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.4.新增接口:SPMM产品参数查询
(1)查询请求
///SPMM产品参数查询
virtual int ReqQrySPMMProductParam(CThostFtdcQrySPMMProductParamField *pQrySPMMProductParam, int nRequestID) = 0;(2)查询响应
///SPMM产品参数查询响应
virtual void OnRspQrySPMMProductParam(CThostFtdcSPMMProductParamField *pSPMMProductParam, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.5.报价接口新增字段
为支持大商所GIS属性交易指令,报价接口ReqQuoteInsert新增TimeCondition字段。GIS属性对应THOST_FTDC_TC_GFS枚举值。该业务交易所尚未上线,待交易所上线后可进行申报。
v6.7.0(推荐,主用)
1.此版本未新增接口,支持查询流量压缩lz4算法;
抓包对比的方法也很简单,同一个程序更换不同的 thosttraderapi_se 动态库文件(6.6.8和6.7.0),分别连实盘进行相同的操作:认证、登录、确认结算单、资金查询、持仓查询、委托查询。
下图中51205端口(柜台)发给1102端口(本地程序)的包采用的是6.6.8版本,包个数大概占80%;
51205端口(柜台)发给1135端口(本地程序)的包采用的是6.7.0版本,包个数只占20%;
采用lz4压缩算法的版本,从下发的包的个数上有很大的提升,流量也仅有原来的30%左右。
2.优化API的openssl编译和查询合约响应中ExchangeID乱码问题。
v6.6.9
此版本为支持郑商所SPBM组保业务而变更,新增8个交易查询接口
1.1.新增接口:SPBM期货合约参数查询(查询对冲参数X、Y、Z)
(1)查询请求
///SPBM期货合约参数查询
virtual int ReqQrySPBMFutureParameter(CThostFtdcQrySPBMFutureParameterField *pQrySPBMFutureParameter, int nRequestID) = 0;(2)查询响应
///SPBM期货合约参数查询响应
virtual void OnRspQrySPBMFutureParameter(CThostFtdcSPBMFutureParameterField *pSPBMFutureParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.2.新增接口:SPBM期权合约参数查询
(1)查询请求
///SPBM期权合约参数查询
virtual int ReqQrySPBMOptionParameter(CThostFtdcQrySPBMOptionParameterField *pQrySPBMOptionParameter, int nRequestID) = 0;(2)查询响应
///SPBM期权合约参数查询响应
virtual void OnRspQrySPBMOptionParameter(CThostFtdcSPBMOptionParameterField *pSPBMOptionParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.3.新增接口:SPBM品种内对锁仓折扣参数查询
(1)查询请求
///SPBM品种内对锁仓折扣参数查询
virtual int ReqQrySPBMIntraParameter(CThostFtdcQrySPBMIntraParameterField *pQrySPBMIntraParameter, int nRequestID) = 0;(2)查询响应
///SPBM品种内对锁仓折扣参数查询响应
virtual void OnRspQrySPBMIntraParameter(CThostFtdcSPBMIntraParameterField *pSPBMIntraParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};///SPBM品种内对锁仓折扣参数1.4.新增接口:SPBM跨品种抵扣参数查询
(1)查询请求
///SPBM跨品种抵扣参数查询
virtual int ReqQrySPBMInterParameter(CThostFtdcQrySPBMInterParameterField *pQrySPBMInterParameter, int nRequestID) = 0;(2)查询响应
///SPBM跨品种抵扣参数查询响应
virtual void OnRspQrySPBMInterParameter(CThostFtdcSPBMInterParameterField *pSPBMInterParameter, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.5.新增接口:SPBM组合保证金套餐查询
(1)查询请求
///SPBM组合保证金套餐查询
virtual int ReqQrySPBMPortfDefinition(CThostFtdcQrySPBMPortfDefinitionField *pQrySPBMPortfDefinition, int nRequestID) = 0;(2)查询响应
///SPBM组合保证金套餐查询响应
virtual void OnRspQrySPBMPortfDefinition(CThostFtdcSPBMPortfDefinitionField *pSPBMPortfDefinition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.6.新增接口:投资者SPBM套餐选择查询(操作员可以查所有投资者,投资者只能查自己的)
(1)查询请求
///投资者SPBM套餐选择查询
virtual int ReqQrySPBMInvestorPortfDef(CThostFtdcQrySPBMInvestorPortfDefField *pQrySPBMInvestorPortfDef, int nRequestID) = 0;(2)查询响应
///投资者SPBM套餐选择查询响应
virtual void OnRspQrySPBMInvestorPortfDef(CThostFtdcSPBMInvestorPortfDefField *pSPBMInvestorPortfDef, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.7.新增接口:投资者SPBM组合保证金系数查询
(1)查询请求
///投资者新型组合保证金系数查询
virtual int ReqQryInvestorPortfMarginRatio(CThostFtdcQryInvestorPortfMarginRatioField *pQryInvestorPortfMarginRatio, int nRequestID) = 0;(2)查询响应
///投资者新型组合保证金系数查询响应
virtual void OnRspQryInvestorPortfMarginRatio(CThostFtdcInvestorPortfMarginRatioField *pInvestorPortfMarginRatio, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};1.8.新增接口:投资者产品SPBM明细查询
(1)查询请求///投资者产品SPBM明细查询
virtual int ReqQryInvestorProdSPBMDetail(CThostFtdcQryInvestorProdSPBMDetailField *pQryInvestorProdSPBMDetail, int nRequestID) = 0;(2)查询响应
///投资者产品SPBM明细查询响应
virtual void OnRspQryInvestorProdSPBMDetail(CThostFtdcInvestorProdSPBMDetailField *pInvestorProdSPBMDetail, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
v6.6.8
用户登录应答 CThostFtdcRspUserLoginField 增加广期所时间
///广期所时间
TThostFtdcTimeType GFEXTime;
v6.6.7
1.1.新增CTP_GetDataCollectApiVersion接口
采集库新增CTP_GetDataCollectApiVersion接口获取采集库版本号:const char * CTP_GetDataCollectApiVersion(void);1.2.SubmitUserSystemInfo增加错误返回
SubmitUserSystemInfo函数增加错误返回值:-7,对应错误信息为“api and collect api version dismatch ” 采集库版本与API版本不匹配时输出该错误码(举例采集库为评测版,API为生产版)1.3.CTP_GetSystemInfo增加返回值错误码
DATA_COLLECT_API_EXPORT int CTP_GetSystemInfo(char* pSystemInfo, int& nLen)在调用采集信息上报的时候,增加检查密文长度是否正常,不正常直接返回错误。长度大于等于264则放过。获取AES加密和RSA加密的终端信息pSystemInfo的空间需要调用者自己分配至少270个字节。Windows返回值定义:返回值 & (0x01 << 0) 不为0 表示终端类型未采集到返回值 & (0x01 << 1) 不为0 表示 信息采集时间获取异常返回值 & (0x01 << 2) 不为0 表示ip 获取失败 (采集多个相同类型信息的场景有一个采集到 即表示采集成功)返回值 & (0x01 << 3) 不为0 表示mac 获取失败返回值 & (0x01 << 4) 不为0 表示 设备名 获取失败返回值 & (0x01 << 5) 不为0 表示 操作系统版本 获取失败返回值 & (0x01 << 6) 不为0 表示 硬盘序列号 获取失败返回值 & (0x01 << 7) 不为0 表示 CPU序列号 获取失败返回值 & (0x01 << 8) 不为0 表示 BIOS 获取失败返回值 & (0x01 << 9) 不为0 表示 系统盘分区信息 获取失败
Linux返回值定义: 返回值 & (0x01 << 0) 不为0 表示终端类型未采集到返回值 & (0x01 << 1) 不为0 表示 信息采集时间获取异常返回值 & (0x01 << 2) 不为0 表示ip 获取失败 (采集多个相同类型信息的场景有一个采集到 即表示采集成功)返回值 & (0x01 << 3) 不为0 表示mac 获取失败返回值 & (0x01 << 4) 不为0 表示 设备名 获取失败返回值 & (0x01 << 5) 不为0 表示 操作系统版本 获取失败返回值 & (0x01 << 6) 不为0 表示 硬盘序列号 获取失败返回值 & (0x01 << 7) 不为0 表示 CPU序列号 获取失败返回值 & (0x01 << 8) 不为0 表示 BIOS 获取失败
1.4.新增命令获取云服务器硬盘序列号信息
新增system("wmic diskdrive get serialnumber")命令获取CPU、硬盘序列号等信息。1.5.启用OnHeartBeatWarning心跳超时回调
当60s没有收到心跳时,支持回调该函数,客户端可提前知道网络断开等场景(前提是客户端需要实现该接口)。1.6.OnRspQryInvestor和OnRspQryProduct接口新增字段
OnRspQryInvestor和OnRspQryProduct接口新增频繁报撤单和日内开仓限制相关字段。具体限制的阈值请咨询期货公司柜台设置。需要柜台版本6.6.6版本及以上支持。
v6.6.5
1.1. 期权自对冲回报OnRtnOptionSelfClose中ActiveUserID字段处理方式更新。
期权自对冲回报OnRtnOptionSelfClose(私有流)报文中 ActiveUserID[操作用户代码]字段值处理如下:1.委托回报报文中此字段值均为空,无论是否是首次委托其请求报文中此字段值也置为空;2.撤单回报报文中此字段值有值,同撤单请求报文。1.2. 交易TraderAPI增加一个错误码。
<error id ="CFMMC_NO_CONNECTION" value="155" prompt="CTP:未连接监控中心">举例:当调用查询保监中心的结算单ReqQrySettlementInfo接口时,查询到m_cfmmcofferInstallID==0时,即该席位未连接监控中心的cfmmcoffer,响应报文中返回该错误代码,给客户清晰的报错提示。1.3. 交易TraderAPI登录回报报文OnRspUserLogin,增加返回柜台的版本号SysVersion。//后台版本信息String SysVersion;
举例:客户登录成功后,调用OnRspUserLogin接口,返回登录成功的回报报文,报文中SysVersion即柜台版本号,如V6.6.5。