一、前言

今年股指期货逐步放开,虽然平今手续费还是很高,但2015年前的一些高频客户已经在逐渐准备起来了。听说今年年底会开通股指期权,如果真是这样,那真是极好的。这不,有位高频客户联系到我,能否拿到今年到现在的股指主力合约的Tick级数据,客户新编写的策略需要进行回测,为后期股指期货交易做准备。于是就有了今天这篇文章,是我通过我司合作软件供应商数字动能来获取。

经过和数字动能老师联系,他们的Auto Trader无法通过Python获取Tick数据(后期会更新支持),只能通过Matlab来获取。下面跟随Steven一起来获取Tick级数据吧。

二、准备工作

因为是通过数字动能的Auto Trader和Matlab来获取Tick数据,所以这两款软件是必须要安装的。

1、安装Auto Trader

首先我们从数字动能官网下载最新的Auto Trader软件,目前该软件只支持Windows 7及以上64位系统,支持的Matlab版本是2013版及以上。

点击上图中左下角【软件下载】即可,下载的文件大概160M。成功下载后,双击安装即可。软件安装过程比较简单,就不在赘述了。

安装完后,打开Auto Trader软件。需要一个注册账号,我这里是公司申请的模拟账户,登录成功后主界面如下。

2、安装Matlab

通过点宽在线量化社区了解到,Auto Trader v3.1支持的Matlab版本是2013及以上,所以我们只需要选择2013及以上版本即可,我这里选择安装Matlab R2019a。R2019a文件比较大,近19G。

Matlab需要安装以下几个组件,请相信我,我是重复测试了多次,才最终在Matlab中成功从Auto Trader中获取Tick数据的。

  • MATLAB 9.6
  • Financial Toolbox 5.13
  • Instrument Control Toolbox 4.0
  • Optimization Toolbox 8.3
  • Statistics and Machine Learning Toolbox 11.5

建议不要全部安装Matlab的所有产品,除非你真的用到。不然安装大概需要占用23G硬盘空间,并且安装时间也会非常长。因为我选择的组件比较少,所以安装过程非常快,因为我是多次测验需要安装那些产品,所以耗时都在循环选择安装品种上面了,其实安装过程都不长,最长的就是首次安装勾选了Matlab 9.6,大概安装了几分钟。

3、配置软件

首先我们配置Auto Trader软件,点击右上角的齿轮按钮,打开下图的应用设置。

按照上面的图示,复制Matlab ToolBox路径,并配置到Matlab中,也就是配置到上面Matlab主界面上红色框标注的【设置路径】中。这里我们先设置最下面的Matlab IED路径,设置好了后,就可以从Auto Trader主界面直接打开Matlab了。

配置好Matlab路径后,关闭Matlab,我们试试从Auto Trader主界面点击【打开Matlab】按钮。如果前面设置的没问题,打开的Matlab主界面如下:

4、试运行

为了验证我们安装的产品是否齐全,我们可以运行如下代码:

tradedate = traderGetTradingDays(20190101,20190723)

这段代码的意思就是,获取今年年初到7月23日之间的交易日,返回的是一维矩阵。

上面代码的运行结果如下:

注意:为了保证能够获取到数据,请保证Auto Trader软件始终处于打开状态哦。

到这里,准备工作已经就绪,接下来就是获取Tick数据了。

三、获取Tick数据

通过查阅Auto Trader软件的帮助文档,发现可以通过traderGetTickData函数来获取某一个交易日的历史Tick数据。

虽然通过该方法可以获取某一个交易日的Tick数据,但如果我们需要某一个时间段的Tick数据,就需要使用for循环了。配合前面的traderGetTradingDays就可以实现了。 完成代码如下(tick.m):

tradedate = traderGetTradingDays(20190101,20190723)
for i=1:size(tradedate)
    try
        % fprintf('%d\n',tradedate(i));
        [Time, Price, Volume, VolumeTick, TurnOver, OpenInterest, BidPrice, BidVolume, AskPrice, AskVolume] = traderGetTickData('CFFEX','IF0000',tradedate(i),'NA');
        test = [Time, Price, Volume, VolumeTick, TurnOver, OpenInterest, BidPrice(:,1), BidVolume(:,1), AskPrice(:,1), AskVolume(:,1)];
        t = array2table(test,'V',{'Time', 'Price', 'Volume', 'VolumeTick', 'TurnOver', 'OpenInterest', 'BidPrice1', 'BidVolume1', 'AskPrice1','AskVolume1'});
        t.Time = datestr(t.Time);
        writetable(t, sprintf('%d%s',tradedate(i), '.csv'));
    catch
        fprintf('%d Error!\n',tradedate(i));
    end
end

上面代码中try…catch中的代码就是获取某一天的Tick数据并保存到csv文件,该段代码来自数字动能买老师,这次再次感谢买老师

四、我的总结

其实前面有篇文章是介绍如何自己收录Tick数据到Sqlite,其实只要坚持每天收录,其实也可以。下图是使用VNPY开源软件收取的股指IF1909的Tick数据。

但对于大部分同学来说还是不太现实。所以才有了今天的文章。虽然使用Auto Trader拉取数据的结果不太理想,但Steven已经反馈给了买老师,想必他们会尽快解决问题的。敬请期待^_^