发布于vn.py社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2021-05-06
【量化零基础入门】的第二阶段《30天掌握Python数据分析》已经更新到第15集!对比市面上其他已有的数据分析类课程,《30天掌握Python数据分析》完全从实战的角度出发,围绕当下前沿的数据分析工具来讲解(比如大数据绘图方面,我们选择了Plotly交互式图表,而不是其他课程千篇一律的静态Matplotlib),同时结合vn.py策略开发过程中的具体案例,来帮助学员建立学得懂、用得到的数据分析知识体系。详细大纲请戳我~~~
本周四发布了vn.py的2.3.0版本,本次更新的内容主要是增加了CTA策略移仓助手,帮助用户实现期货主力月份切换时,一键批量执行仓位和策略的自动移仓换月功能。
和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VN Studio-2.3.0,体验一键安装的量化交易Python发行版,下载链接:
https://download.vnpy.com/vnstudio-2.3.0.exe
CTA策略移仓助手
本次新增的自动移仓助手位于CTA策略模块下(CtaStrategy), 启动VN Trader后打开CTA策略模块界面,然后对要执行移仓的策略先点击【初始化】按钮(需要加载该策略的逻辑仓位)。
完成策略初始化后,找到右上角的的【移仓助手】按钮,点击后打开如下图所示的对话框:
首先请在CTA策略界面在左侧区域配置要执行的移仓任务,其中:
- 移仓合约:该下拉框中,显示当前CTA策略模块下所有策略实例所交易的合约本地代码,选择要平仓掉的老合约;
- 目标合约:要将老的仓位和策略,移仓过去的的合约本地代码(vt_symbol),输入要开仓的新合约;
- 委托超价:执行移仓交易时,委托价格相对于当时盘口对价超出的pricetick。
完成配置确认无误后,点击【移仓】按钮开始执行,移仓过程中会有如下图所示的日志输出,完成后该对话框会被设为锁死(变灰无法再点击):
可以看到几乎1秒内就完成了移仓合约对应的全部仓位和策略的移仓操作,同时CTA策略模块界面上的策略交易代码已经变为目标合约。
移仓过程中具体执行的任务步骤如下:
仓位移仓:
- 对当前账户内,移仓合约的【所有仓位】进行平仓(注意这里不会区分策略持仓还是手动交易持仓),并记录对应的仓位(多空分别记录);
- 对目标合约执行开仓交易,开仓的价格为当时的盘口对价加上超价pricetick,数量为上一步中记录的原有移仓合约持仓量;
策略移仓:
- 记录当前CTA策略模块中,所有交易对象为移仓合约的策略的【逻辑持仓】(注意这里的逻辑持仓和账户实际持仓不一定完全对应);
- 将上述交易对象为移仓合约的老策略实例删除,并创建以目标合约为交易标的同名新策略实例;
- 初始化新策略实例,并将之前记录的老策略实例的【逻辑持仓】,更新到新策略的状态上。
回到VN Trader主界面,也可以查看到详细的移仓委托和成交记录:
请注意【移仓助手】功能目前处于beta测试阶段,使用前务必先在测试环境中进行充分测试后再用于实盘!使用过程中有任何建议也欢迎在Github上开Issue留言。
3.0版本精简重构启动
年初的《2021年vn.py项目计划》中有提到今年将会逐步精简vn.py的项目代码,将核心组件和扩展模块逐渐剥离,方便目前越来越多样化的vn.py用户群体的使用习惯。
一些资深的vn.py用户会注意到,本次更新中将CTP接口代码从vnpy仓库中进行了剥离,构建了两个全新的项目:
- vnpy.api.ctp和vnpy.gateway.ctp模块 -> vnpy_ctp项目
- vnpy.gateway.ctptest模块 -> vnpy_ctptest项目
vn.py从2.0版本以来因为功能太多导致打包极为复杂,无法通过直接上传pypi实现pip快速安装,也是官方推出VN Studio的主要原因之一(手动安装对大部分用户来说还是不现实)。
而剥离后的项目由于只包含该接口的相关代码,且没有复杂的依赖库,所以vnpy_ctp和vnpy_ctptest都可以非常方便的进行发行版打包上传pypi,也同时实现了Windows和Ubuntu系统下的pip install快速安装。
为了保持向后兼容,我们在vnpy.api.ctp/ctptest下保留了直接加载原接口的语法糖,后续其他模块的剥离也会采用类似处理方案,所以对于大部分用户来说后续的精简重构几乎完全无感。
因为终于确定了精简重构的技术方案,项目的版本号升级也会从本次发布有所变更,从原来的2.1.9->2.2.0,到现在的2.2.0 -> 2.3.0,计划在剥离完全部的api、gateway和app后,正式发布3.0版本。
其他更新
CTP接口
CTP交易接口(vnpy_ctp/vnpy_ctptest)升级到6.5.1版本,包括穿透式生产环境和穿透式测试环境现在都是同一个版本号了。
CHANGELOG
修复
- 修复IbGateway断线重连后,没有自动订阅之前已订阅的合约行情问题
- 修复CTA模块的净仓交易模式中,部分平仓部分开仓时,开仓部分下单错误的问题
- 修复CtpGateway对于FAK和FOK委托指令的处理错误问题
- 修复IbGateway,查询历史数据由于传参错误导致的查询失败问题
- 修复IbGateway,当要查询的合约历史数据不存在时卡死的问题
- 修复IbGateway,查询返回的合约乘数(字符串)未作转换导致的上层应用问题
调整
- 修改CTA模块的净仓交易模式,支持上期所和能交所的今昨仓拆分下单
- 调整组合策略模块的回测引擎K线回放逻辑,当某个时间点K线数据缺失时,推送给策略的K线字典中不对其进行向前补齐
- 将CTP接口和API封装,剥离到vnpy_ctp项目中
- 将CTP穿透式测试接口和API封装,剥离到vnpy_ctptest项中
新增
- 新增DataManager在导入CSV文件时,对于时间戳时区的选择功能
- 新增CtaStrategy模块的策略移仓助手功能,实现一键式期货换月移仓支持