vn.py全实战进阶课程学习笔记(零)

目录

写在前面

MySQL数据库配置

安装mysq

创建数据库

vnpy数据库配置

rqdata数据服务配置

申请rqdata试用权限

vnpy参数配置

simnow仿真环境配置

扫描二维码关注公众号,回复: 13280446 查看本文章

准备账号

接口登录

查看合约

订阅行情

交易下单

委托成交

资金持仓

实盘交易

数字货币接口连接

准备账号

接口登录

查看合约

订阅行情

交易下单

委托成交

资金持仓

实盘交易


写在前面

我刚接触量化投资,对量化投资很感兴趣,在闲暇时间进行量化投资的学习,只能进行少量资金进行量化实践。现阶段的计划是阅读vn.py的源码,学习vn.py架构机制,在学习的过程中,会以分享的形式记录,以加深对vn.py的理解,有不对的地方欢迎大家批评指正。
欢迎志同道合的朋友加我QQ(1163962054)交流。
分享的github仓库:https://github.com/PanAndy/quant_share

《vn.py全实战进阶课程学习笔记》这一系列的博客分享主要是对vnpy官方课程《vn.py全实战进阶课程》学习过程的整理,我将尽量按照课程讲解的思路进行梳理,也会带着介绍一些其中的源码实现。同时,也会参考《vnpy项目文档》(请叫我文档搬运工哈哈哈)。最重要的是,我计划跟着课程里的操作进行实验,我争取将实验过程都复现出现,相关截图用我自己的。

这篇博客记录我配置vnpy回测和实盘环境过程中的相关内容。


MySQL数据库配置

刚接触vnpy的时候,用的是vnpy默认的sqlite轻量级数据库,那时候库A股全市场股票日线数据,在UI界面加载数据的时候比较卡,不知道是不是数据库的问题,当然也有可能是数量量确实很大。所以,这一次重新装vnpy的时候,就配置了一下mysql数据库。

尴尬啊。。。这篇文章内容还没做完,有前辈和我说mysql特别慢,推荐使用PostgreSQL,配置方法大差不差,我就不写了,先配去了。。。刷刷刷一顿,很快能配置好。

主要参考为vnpy官方的《vn.py社区精选6 - 做交易,你需要选好数据库》,这篇文章对vnpy支持的数据库的安装介绍的比较详细。这里我就介绍我的安装过程,可以分为三步:安装mysql、创建数据库、vnpy数据库配置。总体而言,我的整个配置过程还是挺流畅的,没有遇到什么报错。

安装mysq

从MySQL官网(https://dev.mysql.com/downloads/installer/)下载windows版本的安装包,然后一路无脑安装。注意,安装的过程中,要记住root账户的密码,其他的都设置为默认值就行。

创建数据库

MySQL安装完毕之后,自动打开MySQL的图形管理工具MySQL WorkBench,会默认让连接数据库,输入root和密码,建立数据库连接。

由于vnpy不会主动为关系型数据库创建数据库,所以需要自己创建数据库。

在打开的数据库管理界面中,点击下图中菜单栏红色方框的按钮,来创建新的数据库。数据库名称输入vnpy,然后无脑点Apply,完成数据库的创建。

vnpy数据库配置

数据库创建完成以后,启动VN Trader,点击菜单栏的【配置】后,设置数据库相关字段,如下图所示。保存完成配置后,需要重启VN Trader来启用新的数据库配置。重启后,在打开VN Trader的过程中若无报错,则说明MySQL数据库配置成功。

此时可以刷新MySQL Workbench,可以看到vnpy数据库的表结构已经创建完成。

同样,打开C:\Users\xxx\.vntrader\vt_setting.json文件,可以看到vntrader的配置信息已经更新。

rqdata数据服务配置

几个月前申请了rqdata教育版本的使用权限,无奈没有办法连接到校园网,这一次申请了一个15天的试用账号。先通过这个账号来跑通vnpy的rqdata数据获取和回测吧,回头应该是要购买rqdata的数据服务的。

这一部分的参考文章就是vnpy官方出的《vn.py快速入门7 - 历史数据回测优化》里关于rqdata连接的介绍。同样,这里记录我的配置过程,建议直接看官方文档。

rqdata数据服务配置主要为两步:申请rqdata试用权限、vnpy参数配置。

申请rqdata试用权限

首先,是ricequant与vnpy合作的申请方式https://www.ricequant.com/welcome/purchase?utm_source=vnpy,这个方法在vnpy官方论坛(https://www.vnpy.com/forum/topic/2005-rqdata-shi-yong-shen-qing-shi-yi)上查到的。通过这种方式申请,可以获得15天的免费试用权限,现在我用的就是这种方式。

其次,ricequant提供了教育专区的申请(https://www.ricequant.com/welcome/edu)。填写学生信息以后,联系ricequant服务人员,提醒审核申请,然后会收到授权邮件。需要注意的是,这种方式申请的授权邮件只能在校园网(xxx.edu)内使用。因为我没在学校,所以申请下来以后,就连不上。

最后,在ricequant主页(https://www.ricequant.com/welcome/rqdata)里点申请rqdata试用。但是这里进去的申请表单需要填金融机构的信息、名片等等,不太适合个人使用。

vnpy参数配置

rqdata申请成功以后,会收到邮件,申请成功后会自动弹出开始下载[make.bat]文件,该文件中包含了申请的试用账号和密码。

使用vscode打开make.bat文件,可以看到name和password。

然后在vnstation的配置表单中填写配置信息,重启vnstation,配置完成。开启量化回测之旅吧。

simnow仿真环境配置

第一次配置simnow仿真环境,主要参考的是vnpy官方发布的《vn.py快速入门2 - 国内期货CTP》。同样,这里主要是记录我的配置过程,希望别出什么意外吧哈哈哈。

按照官方教程,主要包括以下八个步骤:准备账号、接口登录、查看合约、订阅行情、交易下单、委托成交、资金持仓、实盘交易。

准备账号

上期技术官方运营了一套期货仿真交易环境SimNow,提供和实盘环境一致的行情以及交易撮合规则,现在已经是做各种CTP测试交易的首选了。

打开SimNow官网simnow.com.cn,点击右上角“注册账号”,填写一些基础信息完成注册。但有两个坑需要注意。

1. 手机号使用移动或联通的号码,其他运营商可能收不到验证码。

2. 注册时间,请选择白天的期货交易时段,即上午的9:00-11:30,下午的13:00-15:00,其他时段注册系统可能各种抽风:图片验证码死活不对、注册按钮点不了,网页刷不出来...。我就说刚刚19:30怎么网页都打不开,手动捂脸。。。现在还是假期,我就先copy一下vnpy官方的截图了。

注册完成后,回到SimNow首页点击右上角“投资者登录”,输入手机号和密码登录进行。注意investorId,是SimNow环境的CTP用户名,而不是手机号。同时CTP密码就是登录网站用的密码。

接下来需要先修改一次密码才能使用API进行交易。

接口登录

启动VN Trader Pro,加载CTP接口,不要加载CTP测试接口。进入主界面后,点击菜单栏的【系统】->【连接CTP】,配置连接信息,如下图所示。注意用户名为:SimNow的investorId,密码为SimNow的登陆密码。

其中交易和行情服务器,一共有三组选择,前两组只能在交易时段登陆(周一到周五,日盘和夜盘时段),提供和实盘环境一致的行情和撮合。

查看合约

点击菜单栏【帮助】->【查询合约】,或者左侧功能导航栏的倒数第二个放大镜按钮,打开合约查询对话框。

图片

订阅行情

在VN Trader界面左上角的交易组件中,选择交易所、接口后,在代码框中输入合约代码后回车,可订阅行情。当收到最新行情Tick推送时,会显示在下方的深度报价中,Tick推送的最高更新频率是每秒2笔,如果没有变化则可能1笔推送都没有。

注意国内期货普遍只提供1档买卖价,部分期货公司的上期所和能源交易所品种可以获取到5档买卖价。

图片

交易下单

知道最新行情的价格在哪里后,就可以进行买卖下单。

图片

委托成交

委托请求提交后,则会返回相应的委托回报信息,显示在委托组件中,显示当前这笔委托请求的最新状态。

图片

资金持仓

委托成交后,CTP账户的资金情况将发生变化,可用资金将会减少,同时整体余额将基于“逐日盯市”的规则变动。

VN Trader中底部中间的资金监控组件的数据,默认以每6秒一次的频率查询刷新,所以某一时间点你看到的数据可能并非最新情况。

持仓信息同样也采用6秒刷新的频率 ,注意对于国内的期货市场,多头和空头的持仓情况分开计算。双向持仓均会存在各自的保证金占用。

由于上期所(包括能源交易中心)今昨仓分离的规则,平仓时需要分别发出对应的委托指令。如,想要平掉rb1910的8手多头持仓,则需要分别发出平昨7手的指令,加上平今1手的指令。而其他三家交易所不受此影响,直接选择平仓8手即可。

图片

图片

实盘交易

当你已经对SimNow的仿真测试环境足够熟悉后,可能已经做好了使用CTP柜台进行实盘交易的准备。

对于CPT实盘交易:

  • 用户名和密码,开户后可以直接拿到。
  • 经纪商编号和交易行情服务器地址,可以联系客户经理获取
  • 产品名称和授权编码,完成穿透式认证获取

数字货币接口连接

也是第一次连接数据货币接口,参考文档是vnpy官方《vn.py快速入门3 - 数字货币BITMEX》。针对CTA类策略的研发,需要充足的历史数据来满足模型开发、策略回测的要求,目前只有BitMEX和币安两个交易所的接口提供了较长的历史数据,超过1年的1分钟K线。

连接过程也是分为八个步骤:准备账号、接口登录、查看合约、订阅行情、交易下单、委托成交、资金持仓、实盘交易。

准备账号

和期货CTP类似,BitMEX交易所也提供了一套TESTNET仿真交易环境,打开https://testnet.bitmex.com,点击右侧的“注册”按钮,填入基本信息快速完成注册。

注意BitMEX网站目前在国内需要科学上网或者境外的云服务器(如香港阿里云)来解决,同时后续连接交易所进行交易也同样需要。要多试几个科学上网的方法,有的可能不行。

注册完成后,登录到交易主页面,点击顶部的菜单栏的API按钮后,在左侧导航栏中找到“API密钥管理”:

1. 名称随意填一个

2. CIDR留空不填

3. 权限选择“委托”

4. 点击“创建API密钥”按钮

记住:记录好你的ID和密钥(Secret),离开创建页面之后,就没有了。在所有数字货币交易所的世界中,这两条信息就是你API交易时的用户名和密码了,千万不要泄露给别人。

接口登录

启动VN Trader Pro,只加载BITMEX接口就行。

进入主页面之后,点击菜单栏的“系统”->“连接BITMEX”,填入各个字段:

注意,如果在国内的机器上运行,在点击“连接”按钮前请确保已经科学上网,且检查代理端口是1080。点击【连接】按钮开始登录BITMEX服务器以及相关初始化操作,在右下角的日志监控组件中,可以看到初始化相关的日志信息输出。登录初始化的过程中有任何异常情况,日志信息都会看到相应的提示,自行排查。

看到“Websocket API验证授权成功”这条日志后,说明已经成功完成 了初始化操作。如下图所示。

查看合约

点击菜单栏【帮助】->【查询合约】,或者左侧功能导航栏的倒数第二个放大镜按钮,打倒合约查询对话框,点击右上角的查询按钮,显示当前VN Trader内部已经连接的交易接口上支持的所有可交易合约。

订阅行情

获得合约信息后,则可以在VN Trader界面左上角的交易组件框中,选择交易所、接口后,在代码中输入合约代码后回车,即可订阅行情。

BitMEX交易所最主要的品种是永续合约XBTUSD和ETHUSD,永续合约可以理解为一种不会到期交割的期货,每天通过互换费率结算来实现期货和现货价格的收敛。

当收到最新行情Tick推送时,会显示在下方的深度报价中。和国内期货的CTP接口不同,BitMEX的Tick数据推送采用逐笔全推模式,也就意味着市场上的每一笔成交或者挂单变动,你都会收到对应的Tick数据推送更新。

所有已订阅的行情信息,都会显示在右侧顶部的行情监控组件中,方便后续快速执行手动交易。

交易下单

知道最新行情的价格在哪里后,就可以进行买卖下单了:

1. 选择交易方向:要买多还是要卖空;

2. 交易开平留空不用选

3.选择价格类型:BITMEX接口支持限价、市价、STOP(停止单)三种委托类型

4. 输入价格和数量后,点击“委托”按钮即可发出交易请求。

委托成交

委托请求提交后,则会返回相应的委托回报信息,显示在委托组件中,显示当前这笔委托请求的最新状态。

注意委托组件分为两个:

  • “活动”:只显示当前处于可撤状态(提交中、未成交、部分成交)的委托信息
  • “委托”:显示所有的委托信息(包括可撤委托)

两个组件中,对于处于可撤状态的委托,均可双击该笔委托的单元格来实现撤单的功能(鼠标放置其上时会有文字提示)。或者也可以通过交易组件上的单击“全撤”按钮,来实现一键全撤VN Tader内当前所有可撤委托。

当委托发生成交后,VN Trader会收到成交推送的数据,并显示在成交监控组件中,用户可以通过每笔成交的委托号来和对应的委托映射。注意在实盘中,每笔委托可能和多笔反向来自其他投资者的委托发生成交,即一笔委托对应有多笔成交记录。

资金持仓

BitMEX交易所的结算货币采用的是XBT(BTC),也就是所谓的币本位,而非USDT(所谓的法币本位)。委托成交后,账户的资金情况将会发生变化。注意资金栏中显示的数字对应的单位为XBt,而BitMEX网页上显示的数字单位为XBT:

1XBT=1,000,000,000XBt

BITMEX接口的资金和持仓信息均采用服务器推送模式,也就是任意时间点你看到的数字都是目前账户上的最新情况(和CTP的6秒查询形成鲜明对比)。

同时,在持仓计算上,采用的是净持仓模式(多空仓位自动对冲),数量为正时代表当前持有多头持仓,负则是空头持仓。

实盘交易

当你已经对TESTNET的仿真测试环境足够熟悉后,可能已经做好了实盘交易的准备。前往https://www.bitmex.com注册好实盘账户后,完成入金和KYC等操作后,获取API的ID和密钥方法和TESTNET环境完全一致。注意在连接BITMEX的对话框中,服务器要改为REAL(实盘环境)。

BitMEX交易所的服务器位于爱尔兰的亚马逊云AWS上,测试阶段可以用科学上网来连接,但进入实盘阶段后,还是推荐用境外云服务器更加稳定,当然对交易策略延时敏感的用户,最好的选择就是爱尔兰的AWS服务器了。

猜你喜欢

转载自blog.csdn.net/PAN_Andy/article/details/117825197