CTP的程序化交易系统开发

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

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

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

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

   主要业务举例如下:

CTP的程序化交易系统开发_第1张图片

行情涉及两种通讯模式:

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

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

CTP的程序化交易系统开发_第2张图片

 

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

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

 

CTP的程序化交易系统开发_第3张图片

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

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

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

CTP的程序化交易系统开发_第4张图片

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

CTP的程序化交易系统开发_第5张图片

2.SIMNOW提供两类数据:

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

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

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

3.行情Demo版,可以到:https://download.csdn.net/download/ranl007/10934692  下载

版下载,用VS2013打开后,点击testMdApi.cpp

 

CTP的程序化交易系统开发_第6张图片

运行后的情况:

 

CTP的程序化交易系统开发_第7张图片

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

 

CTP的程序化交易系统开发_第8张图片

4.交易Demo下载地址为:https://download.csdn.net/download/ranl007/10935899  下载

,主要是修改MarketFront、BrokerID、TradeFront、个人期货账号和密码即可。

可以加QQ379305007交流

你可能感兴趣的:(CTP的程序化交易系统开发)