vlambda博客
学习文章列表

还不理解真格量化API设计?我们不妨参考一下CTP平台

在阅读真格量化API文档的时候,有些读者会对一些API的设计感到困惑。


为了更好地理解真格量化的API,我们有必要了解其封装的一些底层柜台API,例如上期技术的CTP。


综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台。CTP平台以"新一代交易所系统"的核心技术为基础,提供稳定、高速、开放式的接口,适合程序化交易软件调用。


CTP API接口文件清单一般包括:

还不理解真格量化API设计?我们不妨参考一下CTP平台

整个开发包有2个核心头文件包括4个核心接口,

其中ThostFtdcMdApi和ThostFtdcTraderApi两个头文件,一个处理行情,一个处理交易。


(1)在ThostFtdcMdApi.h头文件中,处理行情的CThostFtdcMdApi接口有两个类(class),分别是CThostFtdcMdApi和CThostFtdcMdSpi,以Api结尾的是用来下达指令,以Spi结尾的是用来响应指令的回调。

还不理解真格量化API设计?我们不妨参考一下CTP平台





(2)在ThostFtdcTraderApi.h头文件中,处理交易的CThostFtdcTraderApi接口也有两个类,分别是CThostFtdcTraderApi和CThostFtdcTraderSpi,  通过CThostFtdcTraderApi向CTP发送操作请求,通过CThostFtdcTraderSpi接收CTP的操作响应。

还不理解真格量化API设计?我们不妨参考一下CTP平台

CTP API的命名规则:

还不理解真格量化API设计?我们不妨参考一下CTP平台

例如,一些处理行情的API:

还不理解真格量化API设计?我们不妨参考一下CTP平台

一些处理交易的API:

还不理解真格量化API设计?我们不妨参考一下CTP平台

CTP是基于多线程的,程序运行的时候至少有两个线程在工作,一个是程序主线程,另一个是API工作线程。


CTP支持TCP/UDP协议,支持socks4、socks4a 及 socks5代理,以及支持SSL安全套接字。通过函数回调来使用API接口。

还不理解真格量化API设计?我们不妨参考一下CTP平台

与头文件类似,CTP的API封装分为两大部分,一个是TraderApi(thosttraderapi.dll)负责交易部分,另一个是MdUserApi(thostmduserapi.dll)负责行情部分。


交易接口初始化示例:

还不理解真格量化API设计?我们不妨参考一下CTP平台

行情接口初始化步骤:

还不理解真格量化API设计?我们不妨参考一下CTP平台































CTP初始化过程:






还不理解真格量化API设计?我们不妨参考一下CTP平台

其对应的步骤相当于真格量化的账户登录:


Context.accounts["你的期货账户"].Login()


CTP报单时序图:

还不理解真格量化API设计?我们不妨参考一下CTP平台

其对应一系列真格量化的API,例如:


InsertOrder报单请求

还不理解真格量化API设计?我们不妨参考一下CTP平台

OnOrderChange 委托回报:

还不理解真格量化API设计?我们不妨参考一下CTP平台


OnTradeDeal 成交回报:

还不理解真格量化API设计?我们不妨参考一下CTP平台



CancelOrder撤单请求:

还不理解真格量化API设计?我们不妨参考一下CTP平台


下次当您对一些真格量化的Python API用法和设计有疑问时,也不妨参考一下CTP本身的API设计,因为封装的上层不可避免地要继承一些被封装的底层的设计和特性,且受底层功能的制约。有些上层未能实现的功能也是因为底层本身(例如CTP平台或交易所)还不支持这些功能。




— — — — — — E N D — — — — — —

往期文章:



































真格量化可访问:

https://quant.pobo.net.cn

还不理解真格量化API设计?我们不妨参考一下CTP平台