CTP API开发期货自动交易平台概论
题目比较小众,先介绍一下CTP。
综合交易平台CTP(Comprehensive Transaction Platform)是由上海期货信息技术有限公司(上海期货交易所的全资子公司)开发的期货交易平台,CTP平台以"新一代交易所系统"的核心技术为基础,稳定、高速、开放式接口,适合程序化交易软件运用和短线炒单客户使用。
没错,是专门做期货交易用的,关于期货交易的风险,参考下面:
进行期货交易风险相当大,可能发生巨额损失,损失的总额可能超过您存放在期货经纪公司的全部初始保证金以及追加保证金。因此,您必须认真考虑自己的经济能力是否适合进行期货交易。
因为期货保证金制度和价格波动的剧烈变化,很容易让投资者血本无归,其风险比股市要大,新手慎入。
废话就这么多,下面介绍技术。
CTP是基于多线程的,至少有两个线程在工作,一个是程序主线程,另一个是API工作线程。
API底层封装了TCP通讯,通过函数回调来使用API接口。文档手册里的一个示意图。所以开发CTP程序时,要先吃透API的各种回调函数,
CTP的API封装分为两大部分,一个是TraderApi(thosttraderapi.dll)负责交易部分,另一个是MdUserApi(thostmduserapi.dll)负责
举个例子,如何创建TraderApi对象,以及注册处理对象。下面的代码和流程图是一一对应的,看文章要仔细噢。
CThostFtdcTraderApi* pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi(); CtpTraderSpi* pUserSpi = new CtpTraderSpi(pUserApi); //创建API对象 pUserApi->RegisterSpi((CThostFtdcTraderSpi*)pUserSpi); // 注册事件类,该事件类封装了函数回调 pUserApi->SubscribePublicTopic(THOST_TERT_RESTART); // 订阅公有流 pUserApi->SubscribePrivateTopic(THOST_TERT_RESTART); // 订阅私有流 pUserApi->RegisterFront(tradeFront); // 注册交易前置机 pUserApi->Init(); //初始化API
详细解答一下CtpTraderSpi ,他是一个继承自CThostFtdcTraderSpi的类,里面封装了函数回调。CThostFtdcTraderSpi是CTP封装好的,留出接口允许我们重载,就这么简单。
至于CtpTraderSpi里可以重载什么函数,你下载API SDK自己看看,太多了没法完全说明白,而且很多函数也没有用。。。
再给大家介绍一下交易类和行情类的结构体以及其命名特点。
最后,现在股票,权证其实都有自动交易的API。