逐渐的,期货市场很多客户使用策略进行量化交易,那如何对策略的好坏进行判断呢?就需要使用Tick级数据进行验证。首先我们来讲解一下基础知识点。

一、基础知识

1、Tick数据

Tick Data本身并不神秘,对于国内期货市场,交易所发送的都是切片信息(快照信息),而不是真实的Tick数据。国内交易所的Order book的数据维护都是实时进行的,但是和国外交易所不同,并不是每个动作都会实时推送到市场上来,而是根据指定的时间间隔进行一次检查,如果该时间段内有动作,则生成一次快照并且推送出来,数据的推送充其量只能算做OnTime,而不能叫做OnTick。

因为是一段时间内的交易信息汇总,所以我们只能得到最新的成交价和总的成交量,相比每次变化都会及时推送的Tick Data,丢失了不少信息。 可能会出现因为信息丢失而导致无法根据tick获取到当日最低成交价的情况,所以国内交易所都会单独推送一份当日最高最低价以弥补。

IF1909 Tick数据

通过上图可以看出,记录的是国内中国金融期货交易所( 简称“中金所” ),其对应的交易所代码为:CFFEX,对应合约IF1909。中金所每500ms推送一次快照数据。

2、CTP

CTP是 Comprehensive Transaction Platform 的简称,中文是“综合交易系统”,由上海期货交易所旗下的上海期货信息技术有限公司开发的一套集交易、风险控制和结算为一体的管理系统。期货公司多数从交易所购置并作为其主席系统,量化客户可以使用交易所提供的CTP API连接期货公司的前置地址进行交易、风控等操作。

Simnow快期配置

以前客户可以通过期货公司提供的快期客户端,直接得到交易IP、端口以及BrokerID等信息,就可以直接交易了,但从2019年6月中旬,监管层强行要求每家期货公司对外部接入系统进行授权方可接入(看穿式监管)。也就是客户需要使用Appid向开立期货账户的期货公司申请Authcode,Appid和Authcode一一对应,需要在请求登录ReqUserLogin前调用认证ReqAuthenticate,只有认证通过后,方可成功登录交易。

期货日报

二、准备工作

1、安装VNPY

有了前面的基础知识储备,你如果在一家期货公司开立了账户并进行了看穿式监管,那么就可以拿到BrokerID、用户代码、交易密码、Appid和Authcode等信息。有了这些信息,我们就可以安装今天的主角VN.PY啦,这是一款基于Python的开源量化交易平台开发框架 ,先从官网下载最新的v2.0.5进行安装。

VN.PY官网

下载完成后,软件安装也非常容易,基本没有啥选项,一路向下即可。

VN Studio

安装完成后,即可从开始菜单找到VN Studio,按住Ctrl+Shift键的同时拖动vnstation到桌面,即可创建快捷方式。

2、下载SQLiteSpy

因为VN Studio默认Tick数据是保存在.db文件中,为了方便的查看该文件,需要使用SQLiteSpy。 SQLiteSpy是SQLite的快速而紧凑的GUI数据库管理器。它读取SQLite3文件并对它们执行SQL。其图形用户界面使探索,分析和操作SQLite3数据库变得非常容易。 该软件是绿色版,无需安装,下载解压后即可使用。

SQLiteSpy界面

三、下载Tick数据

1、打开VN Trader

还记得前面托放在桌面的vnstation快捷方式吗?我们双击打开,发现弹出一个登陆窗口,需要输入用户名和密码。刚开始使用的时候,我不知道这个账号在哪里注册,经过一段时间的查找后,发现需要去vn.py量化社区进行注册。

vn.py量化社区

点击上图登陆安卓下方的【还未注册?】即可使用微信登录并注册账号。有了账号信息后,就可以输入到登录框,点击登录即可。

VN Station主界面

登录成功后,即可看到如上图所示的界面,这里我们继续点击下方的VN Trader Pro按钮,打开后会让我们选择配置等文件的存放路径,这里默认就存放到当前用户的目录下。

VN Trader运行目录

目录选择完毕后,VN Trader需要我们配置底层接口和上层应用。

配置VN Trader

底层配置里面包括了CTP、飞马、证券、易盛外盘及各类虚拟货币。因为我们需要记录CTP的行情,所以上层应用选择行情记录模块。选择完成后,我们点击启动按钮,即可启动VN Trader主界面。

VN Trader主界面

2、连接CTP

为了能够配置行情代码,我们需要点击【系统】→【连接CTP】配置相应的前置信息。

连接CTP

注意:正常情况下,连接行情是不需要授权码和正确的用户名和密码的,但VNPY不行,因为这里不登录成功,后续就没办法添加合约到K线或Tick记录。

3、查询合约

如果上面的CTP连接信息填写正确,点击【连接】按钮,即可看到左下角日志窗口提示登录和行情都成功的日志信息。如果日志窗口什么信息没有,要考虑前置信息是否正确以及是否是交易日等。

日志信息

只有登录成功,我们才可以通过【帮助】→【查询合约】拿到信息。查询合约窗口可以输入合约代码或者交易所,留空则查询所有合约。这里我留空,点击【查询】按钮,即可得到所有合约的信息。

合约查询

4、行情记录

只有当合约查询能否得到信息后,方可正常使用【功能】→【 行情记录 】,否则下图中的本地代码输入是不会有下拉菜单出现的。

行情记录

上图中我添加了CFFEX的股指IF1909合约,分别添加了K线和Tick记录。添加完后,会在VN Trader主界面行情窗口看到我们添加的代码,其对应的买1价格、买1量、卖1价和卖1量都会随行情而变动。

注意:下载的过程中,请保持VN Trader和VN Station不要关闭哦。

行情窗口

四、查看Tick数据

经过上面几个步骤的设置,此时Tick数据已经开始默默下载了。 那下载的Tick数据从哪里查看呢?这里就用到了前面介绍的SQLiteSpy工具,解压到.vntrader目录。

.vntrader目录
SQLiteSpy文件

我们打开SQLiteSpy.exe文件,再把.vntrader目录下的database.db文件拖到 SQLiteSpy左侧即可打开database.db文件。

database.db文件

从上图可以看出,database.db文件有两个表,分别是dbbardata和dbtickdata,分别对应行情记录窗口中的K线和Tick记录。

为啥我会知道数据存放在database.db文件中呢?这是由于VN Trader有个【配置】→【 全局配置 】,里面有设置。

全局配置

五、我的总结

通过VN.PY官方的行情记录介绍, 目前vnpy支持的数据库为SQLite/ MySQL/ PostgreSQL/ MongoDB。若用户使用MongoDB,则行情记录数据直接载入到MongoDB中。 有兴趣的同学可以自行研究哦,配置到MySQL中,因为查询和导出数据比较方便。虽然SQLiteSpy也支持SQL查询,但导出数据还需要借助第三方工具。

VNPY算开源软件里比较方便的工具了,其功能不仅仅局限于行情记录,还可以连接证券和虚拟货币进行测量交易,这里我就没有详细进行研究了。

量化策略应用