VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 337
声望: 27

发布于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策略模块界面,然后对要执行移仓的策略先点击【初始化】按钮(需要加载该策略的逻辑仓位)。

完成策略初始化后,找到右上角的的【移仓助手】按钮,点击后打开如下图所示的对话框:

description

首先请在CTA策略界面在左侧区域配置要执行的移仓任务,其中:

  • 移仓合约:该下拉框中,显示当前CTA策略模块下所有策略实例所交易的合约本地代码,选择要平仓掉的老合约;
  • 目标合约:要将老的仓位和策略,移仓过去的的合约本地代码(vt_symbol),输入要开仓的新合约;
  • 委托超价:执行移仓交易时,委托价格相对于当时盘口对价超出的pricetick。

完成配置确认无误后,点击【移仓】按钮开始执行,移仓过程中会有如下图所示的日志输出,完成后该对话框会被设为锁死(变灰无法再点击):

description

可以看到几乎1秒内就完成了移仓合约对应的全部仓位和策略的移仓操作,同时CTA策略模块界面上的策略交易代码已经变为目标合约

移仓过程中具体执行的任务步骤如下:

  • 仓位移仓:

    • 对当前账户内,移仓合约的【所有仓位】进行平仓(注意这里不会区分策略持仓还是手动交易持仓),并记录对应的仓位(多空分别记录);
    • 目标合约执行开仓交易,开仓的价格为当时的盘口对价加上超价pricetick,数量为上一步中记录的原有移仓合约持仓量;
  • 策略移仓:

    • 记录当前CTA策略模块中,所有交易对象为移仓合约的策略的【逻辑持仓】(注意这里的逻辑持仓和账户实际持仓不一定完全对应);
    • 将上述交易对象为移仓合约的老策略实例删除,并创建以目标合约为交易标的同名新策略实例;
    • 初始化新策略实例,并将之前记录的老策略实例的【逻辑持仓】,更新到新策略的状态上。

回到VN Trader主界面,也可以查看到详细的移仓委托和成交记录:

description

请注意【移仓助手】功能目前处于beta测试阶段,使用前务必先在测试环境中进行充分测试后再用于实盘!使用过程中有任何建议也欢迎在Github上开Issue留言。

 

3.0版本精简重构启动

 

年初的《2021年vn.py项目计划》中有提到今年将会逐步精简vn.py的项目代码,将核心组件和扩展模块逐渐剥离,方便目前越来越多样化的vn.py用户群体的使用习惯。

一些资深的vn.py用户会注意到,本次更新中将CTP接口代码从vnpy仓库中进行了剥离,构建了两个全新的项目:

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

修复

  1. 修复IbGateway断线重连后,没有自动订阅之前已订阅的合约行情问题
  2. 修复CTA模块的净仓交易模式中,部分平仓部分开仓时,开仓部分下单错误的问题
  3. 修复CtpGateway对于FAK和FOK委托指令的处理错误问题
  4. 修复IbGateway,查询历史数据由于传参错误导致的查询失败问题
  5. 修复IbGateway,当要查询的合约历史数据不存在时卡死的问题
  6. 修复IbGateway,查询返回的合约乘数(字符串)未作转换导致的上层应用问题

调整

  1. 修改CTA模块的净仓交易模式,支持上期所和能交所的今昨仓拆分下单
  2. 调整组合策略模块的回测引擎K线回放逻辑,当某个时间点K线数据缺失时,推送给策略的K线字典中不对其进行向前补齐
  3. 将CTP接口和API封装,剥离到vnpy_ctp项目中
  4. 将CTP穿透式测试接口和API封装,剥离到vnpy_ctptest项中

新增

  1. 新增DataManager在导入CSV文件时,对于时间戳时区的选择功能
  2. 新增CtaStrategy模块的策略移仓助手功能,实现一键式期货换月移仓支持
Member
加入于:
帖子: 23
声望: 0

gcc: error: vnpy/api/ctp/vnctp/vnctptd/vnctptd.cpp: No such file or directory

今天在centos里编译了一下,显示这个错误,vnctp不是独立出去了吗,为什么还要编译,是不是要把vnctp下载后放进ctp目录?

Member
avatar
加入于:
帖子: 337
声望: 27

巍岱 wrote:

gcc: error: vnpy/api/ctp/vnctp/vnctptd/vnctptd.cpp: No such file or directory

今天在centos里编译了一下,显示这个错误,vnctp不是独立出去了吗,为什么还要编译,是不是要把vnctp下载后放进ctp目录?

报这个错误是因为vnctp的路径已经从vnpy独立出去了,新的路径是在vnstudio\Lib\site-packages\vnpy_ctp\api\vnctp\vnctptd下面。改一下路径就可以了。

Member
加入于:
帖子: 23
声望: 0

我是在linux里用的压缩包啊,里面没有这个,是不是目前还不能用linux编译2.3

Member
加入于:
帖子: 23
声望: 0

linux下的升级怎么操作?把新版本的vnpy直接覆盖可以吗

Member
加入于:
帖子: 23
声望: 0

把setup.py里关于vnctp的都删掉就好了,官方应该更新一下

Member
avatar
加入于:
帖子: 337
声望: 27

巍岱 wrote:

把setup.py里关于vnctp的都删掉就好了,官方应该更新一下

谢谢反馈,dev分支已经改了。

Member
avatar
加入于:
帖子: 7
声望: 1

对的之前我还在2.3.0 release发过issue,但是说叫我下载2.3.0 release编译就好。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】