-
CTP(Comprehensive Transaction Platform)
综合交易平台。是上期技术专门为期货公司开发的一套期货经纪业务管理系统,由交易、风险控制、结算三大系统组成。
-
交易系统
交易系统主要负责订单处理、行情转发及银期转账业务。
-
结算系统
结算系统负责交易管理、帐户管理、经纪人管理、资金管理、费率设置、日终结算、 信息查询以及报表管理。
-
风控系统
风控系统则主要在盘中进行高速的实时试算,以及时揭示并控制风险。
详细的技术文档在上海期货信息技术有限公司。
目前对外发布的是交易系统接口,通过该接口可以接收交易所行情和下达交易指令。结算和风控系统由期货公司管理人员通过上期技术提供的CTP管理平台完成,个人投资者无需关心。交易、风控和结算系统完全独立部署在上期技术机房内,由上期技术负责维护。
-
-
期货公司与期货交易所
上面提到,CTP是上期技术为期货公司开发的。这里由两个主体。而市场上同等级的主体还有很多,其关系如下。目前国内由三个商品期货交易所(大连商品交易所、上海期货交易所、郑州商品交易所),一个中国金融期货交易所。各大期货交易所均有信息技术子公司对外提供行情交易接口服务,小结如下:
- 郑商所下属子公司 郑州易盛信息技术有限公司 接口代表:启明星API
- 大商所下属子公司 大连飞创信息技术有限公司 接口代表:XSpeed
- 上期所下属子公司 上海期货信息技术有限公司,接口代表:CTP、CTPMini
- 中金所下属子公司 上海金融期货信息技术有限公司,接口代表:飞马
上述四家公司是整个期权期货行情市场的一手批发商,有些二级批发商从上述四家公司申请接口授权,在提供行情资讯(基本行情、Level2、延时)和数据服务(历史数据、统计数据)的基础上提供增值服务(综合资讯服务、行情交易软件等),再打包按年付费,对外提供服务。这类衍生品资讯信息商有
开发者除了直接对接交易所下属技术子公司提供的接口服务外,还可以对接第三方接口服务商,国内主要有以下几家:
而此处关注的CTP,就是上期所下属子公司上期技术提供的一手行情数据批发接口,此接口有三大系统,不过只开放一个交易系统实现交易信息查询与订单提交。
关于CTP是什么的深入案例理解参见:
-
Simnow
CTP是实盘用的,测试一般采用SimNow提供的虚拟盘。Simnow即提供实时数据(有延迟),也可以提供历史数据,CTP是不提供历史数据的。
-
CTP系统架构
- 交易员终端:基于CTP系统给期货公司提供的UserAPI接口实现的管理终端,主要为期货公司服务,暂不对个人投资者开放
- FTD通讯协议:期货交易数据交换协议
- 交易前置:连接外部接入终端和内部FIB总线,提供:链路管理、协议转换和数据路由功能。
- 行情前置:通过FIB总线从报盘管理订阅所有行情数据,按需转发给外部接入终端。
-
通讯模式
CTP内部封装了网络相关逻辑,使用基于TCP协议的FTD协议与CTP后台进行通讯,具体通讯模式有三种:
-
请求应答模式:客户端主动发起请求,CTP后台接收并响应请求
-
广播通讯模式:客户端订阅合约行情后,CTP通过广播对外推送行情信息。
-
私有通讯模式:客户端对某合约进行委托等操作后,报单信息、成交回报等由CTP点对点的推送。
-
-
行情数据
国内CTP平台的行情数据tick级别是 1秒2个tick,免费提供一档行情报价。
CTP接口不提供历史行情,历史行情需通过行情商解决。如果未登陆或者登陆断线造成行情数据丢失,CTP不提供行情回补机制。
主动查询行情指令,有流量限制,如果有在途查询,不允许新发查询,CTP对于数据查询操作请求(ReqQryxxx),1秒最多允许发送1个查询,对报单、撤单、报价、询价等操作没有流量限制。
L2行情需要付费购买:
- 大商所 L2 行情每秒4个tick
- 郑商所 L2 行情每秒4个tick
- 中金所 L2 行情每秒2个tick,L2是五档报价。
-
CTP用到的文件
- ThostFtdcTraderApi.h C++头文件,包含交易相关的指令,如报单。
- ThostFtdcMdApi.h C++头文件,包含获取行情相关的指令。
- ThostFtdcUserApiStruct.h 包含了所有用到的数据结构。
- ThostFtdcUserApiDataType.h 包含了所有用到的数据类型。
- thosttraderapi.dll 交易部分的动态链接库和静态链接库。
- thostmduserapi.dll 行情部分的动态链接库和静态链接库。
- thosttraderapi.lib
- thostmduserapi.lib
- error.dtd 包含所有可能的错误信息。
-
CTP使用流程
-
创建SPI 和API 实例。
这里的SPI 是指开发者创建的自己的类,该类已经继承了接口中的SPI 接口类(CThostFtdcTraderSpi 或
CThostFtdcMdSpi)。而API 即接口中提供的CThostFtdcMdApi 或CThostFtdcTraderApi。 -
向API 实例注册SPI 实例。
-
向API 实例注册前置地址。
交易接口需要注册交易前置地址,行情接口需要注册行情前置地址。
-
订阅公有流(仅限交易接口,行情接口不需要)。
用于接收公有数据,如合约在场上的交易状态。默认模式是从上次断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取(Restart),或从登陆后获取(Quick)。
-
订阅私有流(仅限交易接口,行情接口不需要)。
用于接收私有数据,如报单回报。默认模式是从上次断开连接处继续收取交易所发布数据(Resume 模式)开发者还可以指定全部重新获取(Restart),或从登陆后获取(Quick)。
-
初始化(Init)
-
等待线程退出(Join)
-
-
相关开源学习程序
-
Reference
- 百度百科
- 期货期权交易行情接口
- 章志强-CTP开发总结,包括(初始化、登录、查询、交易、账户管理、出入金管理、新增期权操作)
- 小白期货CTP程序化交易开发入门(一)–CTP开发基础
- ronalgao的博客-基于CTP的程序化交易系统开发(一)
- Tick 数据在技术上究竟是什么东西?