自从综合交易平台(CTP)的 API 开放以来,越来越多的人开始编写自己的程序化交易系统,CTP 编程重要的是接口文件,本文主要介绍一下 CTP 的接口。
CTP 系统介绍
综合交易平台(Comprehensive Transaction Platform),是专门为期货公司开发的一期货经纪业务管理系统,由交易、风险控制和结算三大系统组成。系统能够同时连通国内四家期货交易所,支持国内商品期货和股指期货的交易结算业务,并能自动生成、报送保证金监控文件和反洗钱监控文件。
CTP 是基于多线程的,至少有两个线程在工作,一个是程序主线程,另一个是 API 工作线程。API 底层封装了 TCP 通讯,通过函数回调来使用 API 接口。文档手册里的一个示意图。
CTP 接口概述
CTP 的 API 封装分为两大部分,一个是 MdUserApi(thostmduserapi.dll)负责行情部分,另一个是 TraderApi(thosttraderapi.dll)负责交易部分。
MdUserApi 工作流程图
CTP 的行情模块分两块,一个是同步查询 API(CThostFtdcMdApi),一个是异步回报 API(CThostFtdcMdSpi),这里定义了一个包装类,来管理这两类 API,即 MyRecv 来封装 CThostFtdcMdSpi,CThostFtdcMdApi 直接使用。
MdApi 工作流程图
第一步
用 CreateFtdcMdApi 创建 CThostFtdcMdApi 实例,例如_api。
第二步
创建 CThostFtdcMdSpi 实例,例如_spi,用 RegisterSpi 将_spi 注册到_api 中。
第三步
用 RegisterFront 将行情前置地址注册到_api 中。
第四步
用 Init() 初始化_api,初始化的过程就是与服务建立连接的过程。
第五步
回调函数 OnFrontConnect 在与服务器成功建立连接时被执行,此时用 ReqUserLogin 登录账户。
第六步
回调函数 OnRspUserLogin 在账户登录成功时被执行,此时用 SubscribeMarketData 订阅行情/用 SubscribeForQuoteRsp 订阅询价。此后,行情接口已经可以正常工作了。
TraderApi 工作流程图
TraderApi 的工作流程与 MdApi 略有差异:TraderApi 需要在初始化之前定于私有流和公有流;在账户登录之前进行客户端认证。
TraderApi工作流程图
第一步
用 CreateFtdcTraderApi 创建 CThostFtdcTraderApi 实例,例如_api。
第二步
创建 CThostFtdcTraderSpi 实例,例如_spi,用 RegisterSpi 将_spi 注册到_api 中。
第三步
用 SubscribePrivateTopic 订阅私有流,用 SubscribePublicTopic 订阅公有流。
第四步
用 RegisterFront 将行情前置地址注册到_api 中。
第五步
用 Init() 初始化_api,初始化的过程就是与服务建立连接的过程。
第六步
回调函数 OnFrontConnect 在与服务器成功建立连接时被执行,此时用 ReqUserAuthMethod 认证客户端。
第七步
回调函数 OnRspUserAuthMethod 在客户端认证成功之后被执行,此时用 ReqUserLogin 登录账户。
第八步
回调函数 OnRspUserLogin 在账户登录成功时被执行。此后,交易接口就可以正常工作了,交易者用 Req 开头的请求函数进行查询,在 On 开头的回调函数中获得通知。
以上部分介绍了CTP程序化和行情和交易接口,各接口的方法请参考上期信息的CTP开发文档,里面有详细介绍。
(网址:http://www.simnow.com.cn/static/softwareDownload.action)
CTP_API 开发文档图
- The End -
本文仅供参考,投资有风险
请投资者自行判断投资机会并承担投资风险
爱晖资产
专注于量化领域的证券基金资产管理公司