还不理解真格量化API设计?我们不妨参考一下CTP平台
在阅读真格量化API文档的时候,有些读者会对一些API的设计感到困惑。
为了更好地理解真格量化的API,我们有必要了解其封装的一些底层柜台API,例如上期技术的CTP。
综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台。CTP平台以"新一代交易所系统"的核心技术为基础,提供稳定、高速、开放式的接口,适合程序化交易软件调用。
CTP API接口文件清单一般包括:
整个开发包有2个核心头文件包括4个核心接口,
其中ThostFtdcMdApi和ThostFtdcTraderApi两个头文件,一个处理行情,一个处理交易。
(1)在ThostFtdcMdApi.h头文件中,处理行情的CThostFtdcMdApi接口有两个类(class),分别是CThostFtdcMdApi和CThostFtdcMdSpi,以Api结尾的是用来下达指令,以Spi结尾的是用来响应指令的回调。
(2)在ThostFtdcTraderApi.h头文件中,处理交易的CThostFtdcTraderApi接口也有两个类,分别是CThostFtdcTraderApi和CThostFtdcTraderSpi, 通过CThostFtdcTraderApi向CTP发送操作请求,通过CThostFtdcTraderSpi接收CTP的操作响应。
CTP API的命名规则:
例如,一些处理行情的API:
一些处理交易的API:
CTP是基于多线程的,程序运行的时候至少有两个线程在工作,一个是程序主线程,另一个是API工作线程。
CTP支持TCP/UDP协议,支持socks4、socks4a 及 socks5代理,以及支持SSL安全套接字。通过函数回调来使用API接口。
与头文件类似,CTP的API封装分为两大部分,一个是TraderApi(thosttraderapi.dll)负责交易部分,另一个是MdUserApi(thostmduserapi.dll)负责行情部分。
交易接口初始化示例:
行情接口初始化步骤:
CTP初始化过程:
其对应的步骤相当于真格量化的账户登录:
Context.accounts["你的期货账户"].Login()
CTP报单时序图:
其对应一系列真格量化的API,例如:
InsertOrder报单请求
OnOrderChange 委托回报:
OnTradeDeal 成交回报:
CancelOrder撤单请求:
下次当您对一些真格量化的Python API用法和设计有疑问时,也不妨参考一下CTP本身的API设计,因为封装的上层不可避免地要继承一些被封装的底层的设计和特性,且受底层功能的制约。有些上层未能实现的功能也是因为底层本身(例如CTP平台或交易所)还不支持这些功能。
— — — — — — E N D — — — — — —
往期文章:
真格量化可访问:
https://quant.pobo.net.cn