13.3 开发前准备

13.3 开发前准备

13.3.1 文档下载

CTP API官方下载地址为:http://www.Sfit.com.cn/5_2_ DocumentDown.htm,此链接还提供了文档的下载。最关键的两个文档是《综合交易平台API技术开发指南》和《综合交易平台APl特别说明)),对API有所了解能更有助于掌握交易细节。

13.3.2 MATLAB安装

提供的CTP APl目前有4个大版本:Linux、Windows、iOS、Androìd。其中Lìnux和Wìndows都有32位和64位的APl。

微软官方己经提到过,在64位进程中不能加载32位的DLL,同理,一个32位进程也不能加载一个64位DLL。在CTP 问世的很长一段时间内都只有32位版本,而当时笔者使用的对接技术也是利用.NET直接调用,是在同一进程中,所以要求MATLAB也要安装32位版。

这里我们使用.NET调用的方式。先确保自己安装的是32位的MATLAB,注意MATLAB 2015b是最后一版支持32位系统的版本,以后只有64位版。请下载MATLAB安装包时选择合适的版本。如果你使用的是更早一些的MATLAB版本,那么安装包中可能同时提供了32位与64位。这时你在64位Windows上直接安装,默认的是安装64位系统,所以请进入MATLAB的安装目录,找到bin/win32下的setup.exe进行安装。

在CTP接口推出64位版后,在64位MATLAB中通过.NET调用CTP也是可行的,只要将XAPI开源项目按64位进行编译即可。

但MATLAB对.NET的支持并不是十分完美,长时间运行时可能崩溃,崩溃的原因未知,估计是因为行情接收太多,但.NET版没有进行垃圾回收,导致内存溢出。同时很多其他API没有64位版。经过笔者大量查找国外网站,终于试验出了进程外COM的编写方式,解决了以上问题,后面将进行介绍。

这里提示一个MATLAB使用的小经验。可能很多人喜欢用英文版的操作系统, 结果直接在command中键入"disp'中文'",输出结果是方框,有可能显示的是空白,这要看默认字体是如何设置的。并且直接打开内有中文的M文件也显示全是乱码,按网上的教程说明设置File→Preferences→Font→宋体仍然无效。对于使用英文版的操作系统MATLAB中文显示乱码的问题,这里给出一个解决方法供参考:在Control Panel→Region→Formats中将English改成Chinese,然后重启MATLAB,中文就正常了。

13.3.3 监控工具

必须得先介绍监控软件,否则在开发上完全是在摸黑。

能实现监控的原理是:

(1) CTP_API支持同一账号同时登录,目前期货公司大多设置的是同时最多6个会话登录。

(2) 委托回报与成交回报等信息流会发向所有会话。所以在进行程序化交易时,选择另外一款比较好的手动交易软件来进行监控是不错的方式,可以查看委托状态、委托价、成交回报等信息,方便查找错误。目前在做期货交易时推荐使用快期。

对接CTP平台需要服务器的配置信息,在快期目录下有brokers和custoilllze目录,找到三样东西:经纪商编号(BrokerID)、行情服务器地址(Markeillata)和交易服务器地址(Trading)。如果找不到,请联系所在期货公司工作人员直接告知配置信息。

这里需要注意,不管配宣中地址如何写,若地址开头没有"tcp://",实际使用CTP_API时就得补上。如果以"udp://" 开头,改成"tcp://" 也能正常使用。"udp:/ /"只在托管机房内网,并且期货公司开通功能后才能使用。在下一节的代码中有模拟盘的地址示例。

13.3.4 开发工具

这一项并不是必需的,但API,C版和C#版都在不断升级,或者想在64位MATLAB中使用,所以有时自己也得对源代码重新编译或修改。

开发工具推荐使用Visual Studio 2015, Comrnunity社区版是免费的,可以到微软官网下载,地址为: http://www.visualstudio.comldownloads/downJoad-visual-studio-vs。

如果觉得开VS软件太大,系统资源不够,可以使用开源替代版SharpDevelop,但只能编译C#,不能编译C++。地址为:http://www.icsharpcode.ne/。

记住VS的快捷键F12。转到定义,选中VS中的代码,按F12键会跳转到原始定义处。在MATLAB中填写参数时可能需要查询各种取值情况。