返回首页
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!
当前位置: 主页 > 进阶研究 >

必须收藏的CTP的程序化交易系统开发(一)

时间:2016-11-30 19:16来源:未知 作者:杨清婉 点击:
此篇主要简单总结和介绍CTP程序的基础和开源的Demo版本。 很多人在综合交易平台(CTP)的API开放后,开始编写程序化交易系统。先解读CTP的接口说明:CTP的API使用建立在TCP协议之上FTD协议与交易托管系统进行通讯,而负责投资者交易业务处理的则是交易托管系

  此篇主要简单总结和介绍CTP程序的基础和开源的Demo版本。

  很多人在综合交易平台(CTP)的API开放后,开始编写程序化交易系统。先解读CTP的接口说明:CTP的API使用建立在TCP协议之上FTD协议与交易托管系统进行通讯,而负责投资者交易业务处理的则是交易托管系统。FTD 协议中规定了所有的通讯都基于某一种通讯模式。

  CTP的交易API提供了两个接口:

  1.CThostFtdcTraderApi,我们开发的交易系统通过它向CTP发送操作请求;

  2.CThostFtdcTraderSpi,通过它接收CTP的任何响应。

  主要业务举例如下:

  程序化交易平台图片

 

  行情涉及两种通讯模式:

  1.广播通讯模式:主要是行情订阅,交易所端在行情订阅后,将主动连续向会员发出行情信息;

  2.对话通讯模式:由会员端主动发起的通讯请求。请求被交易所端接收和处理,并给予响应。

  

 

  我们可以通过CTP提供的接口向CTP发送业务申请,也不断的按照三种通讯模式中的其中一种接收CTP的响应。所以,至少应该有两个线程在我们所写的交易系统中:1.负责对CTP发出业务申请的主业务线程;2.负责接收CTP通过三种通讯模式中的其中一种对交易系统响应的API工作线程。

  综上所述,程序化交易系统需要完成的业务可分为:1.基本操作;2.行情操作;3.订单操作;4.数据监听和处理操作。而我的建议是,将程序化交易系统分为四个线程来分别处理以上业务。其它三个线程工作关系如下图所示:

  三个线程工作关系

 

  程序化交易系统在开发过程中,要特别注意处理很多棘手问题,比如,数据处理造成的网络丢包或线程互斥等,因其就是一个复杂的多线程网络程序。

  由上海期货信息技术有限公司开发的CTP交易接口,提供C++的接口,C++的Demo版本在网上有很多可直接使用。

  1.上期所的接口为两个,dll、两个.lib和四个.h文件,初学者直接使用就好,下载地址:上海期货信息技术有限公司

  

 

  需要在SIMNOW上注册CTP开发中要使用的模拟账号,BrokerID为9999,账号即investorId,密码为SIMNOW的登陆密码。

  

 

  2.SIMNOW提供两类数据:

  (1)交易时段的地址:比如,09:00-15:00和21:00-02:30,使用第一套地址,虽是真实的行情数据,但与真实的行情会相比,会有30秒左右延迟。

  (2)为非交易时段,这时的数据是历史行情的播放,比如昨天的数据之类的,可以用来做程序调试。

  注意:其中有MarketFront行情前置,用来做行情接收的地址;TradeFont交易前置,用来做交易的地址。这两个不能弄混,是分开的,否则会登陆失败。

  3.行情Demo版,可以到:上期所CTP-Api之C++行情Demo版下载,用VS2015打开后,点击testMdApi.cpp,将INVESTOR_ID和PASSWORK改成第2点中说的,点运行即可接收到数据。

  

 

  运行后的情况:

  

 

  在MdSpi.cpp中,可以将接收到的数据保存到本地

  

 

  4.交易Demo下载地址为:上期所CTP-Api之C++交易Demo版,主要是修改MarketFront、BrokerID、TradeFront、个人期货账号和密码即可。

  5.如果CTP接口做高频交易,基本是使用C++编程,若不擅长,C#、Python和Java等版本的接口在网上也有,可参考学下。

  

 

  CTP也有很多开源的C#版本,主要推荐XAPI版,地址:QuantBox · GitHub;海风版,更适合个人学习,下载地址:hubert28 (海风) · GitHub。

(责任编辑:admin)
量化投资,高频交易,程序化交易学习必备~900+个(200G+)培训视频持续更新中!!!
------分隔线----------------------------
云量化商城
如果您会开发策略,请进!大量项目等待与您合作!
推荐内容
量化投资培训