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

发布于vn.py社区公众号【vnpy-community】

 
《30天解锁Python量化开发》课程的原定大纲内容(50集)已经在国庆期间全部更新结束,本月底还会补充3-5集的量化应用实践案例分享。课程通过概念讲解和实践操作结合的方式,加上vn.py框架内部代码细节的梳理学习,来帮助你快速掌握Python量化开发能力,详情请戳
 
原文作者:用Python的交易员 | 发布时间:2020-10-27

 

周一发布了vn.py的2.1.7版本,本次更新的内容主要是增加了MarketRadar市场信号雷达模块。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VNStudio-2.1.7,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.1.7.exe

 

市场信号雷达模块(MarketRadar)

 

该模块的主要功能,是允许用户基于自定义Python数学公式,实时计算衍生行情数据。

一看之下可能会觉得和SpreadTrading模块中的价差组合行情计算功能重复了,但实际上两者在功能定位上完全不同:

  • MarketRadar模块

    • 定位分析,主要用于扫描和寻找市场信号机会
    • 支持灵活的Python数学公式:加减乘除、内置函数(max/min等)
    • 基于公式内各个合约的最新成交价,计算自定义公式的最新数值
  • SpreadTrading模块

    • 定位交易,主要用于执行多条腿的价差组合买卖
    • 只能通过价差腿的系数正负,来实现加减的公式计算
    • 基于各条腿的1档盘口,计算价差组合的盘口价格

在VN Station启动对话框中,加载MarketRadar模块,启动VN Trader后先连接登录交易接口,再打开【市场雷达】组件可以看到类似下图的界面:

description

在窗口左下角的编辑区中,可以快速创建要扫描的雷达规则(RadarRule):

description

其中各字段的对应含义如下:

  • 名称

    • 雷达规则的名称,注意不能重复
  • 公式

    • 规则的计算公式,支持任意合法的Python数学公式
    • 注意其中的变量,只能是A、B、C、D、E(不需要都用)
  • A、B、C、D、E

    • 计算公式中要用到的变量对应的合约本地代码(vt_symbol)
    • 收到其中任何一个合约的TICK行情推送时,会实时触发规则计算
    • 不用的变量留空即可
  • 小数

    • 公式的最终计算结果保留多少位小数

点击【添加】按钮即可完成新规则的添加,MarketRadar会自动订阅相关合约行情并开始自动扫描计算。

除了跨期价差这种减法求差的规则外,MarketRadar也能支持金银比这种比例类的计算规则:

description

对于需要调整的规则,也可以同样在左下角输入相应信息(名称请填写要修改的规则名称),点击【修改】按钮即可完成修改。对于不再需要的规则,可以点击监控表中最右侧的【删除】按钮来进行移除。

需要添加较多的雷达规则时,可以通过CSV文件来一次性批量导入,点击窗口右下角的【导入CSV】按钮,在弹出的对话框中找到要导入的CSV文件后打开即可快速完成导入(右下角日志组件中有对应信息输出):

description

CSV文件的格式如下图所示,和编辑区的各字段完全一致:

description

结合Excel的表格快速编辑功能,批量添加规则还是挺方便的:

description

目前2.1.7版本的MarketRadar只支持雷达规则计算结果的数字显示,后续我们会进一步加入图表显示(参考文华的组合)、条件提醒(警报和发微信)、策略信号订阅等功能。

 

委托来源标识

 

这个功能要感谢社区论坛上hxxjava同学的贡献,论坛原帖:

【如何区分CTA策略委托单、成交单是属于哪个策略的?】

今年初就已经在OrderRequest下单请求类(位于vnpy.trader.object)中加入了一个reference字段用于标识委托的来源,但当时字段之前主要为了让服务端的资管系统(O32等)能够进行识别记录,并没有考虑在VN Trader客户端中的相关应用。

在这次的2.1.7版本中,我们在OrderData委托回报类上也加入了reference字段,通过OrderRequest.create_order_data方法来实现自动绑定,同时也增加了所有交易应用模块中的下单自动填写,现在可以很方便的在主界面的【委托监控】组件中看到委托的来源信息:

description

各应用模块填写的reference内容如下:

  • 手动交易:ManualTrading
  • CTA策略:CtaStrategy_策略名
  • 价差交易:SpreadTrading_价差名
  • 期权交易:OptionMaster_ElectronicEye/DeltaHedging
  • 算法交易:AlgoTrading_算法编号
  • 脚本策略:ScriptTrader
  • 组合策略:PortfolioStrategy_策略名

有了reference这个来源信息后,下个版本(2.1.8)我们将会增强下PortfolioManager模块,实现VN Trader本地化的策略盈亏统计功能(分策略、分合约)。

 

其他更新

 

接口方面

  1. 升级重构了华鑫证券的奇点极速柜台接口,并根据交易品种的区别,拆分为了针对股票的ToraStockGateway和针对期权的ToraOptionGateway。

历史数据

  1. RqdataClient增加对TICK数据下载功能支持,购买了RQData的TICK数据服务的用户,可以通过DataRecorder模块来直接下载米筐TICK数据入库;
  2. 直达期货接口DaGateway,增加外盘期货历史数据下载功能,对直达的实盘客户来说以后获取历史数据再也不是问题了(支持历史回测和实盘初始化);
  3. 修复了加载PaperAccount模块后,从接口查询历史数据可能出错的问题(之前影响的是IB接口)。

 

 

同样,有什么想问的问题或者分享的内容,欢迎在文章下方留言。本期我们将会随机抽取一位留言者赠送《量化交易零基础入门系列 - 30天解锁Python量化开发》课程的5折优惠券一张。

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

大佬,有个关于委托来源标识的疑问,在CTA策略模拟盘测试时候,Status.SUBMITTING提交中,reference是有来源标识的,但是在未成交和全部成交状态,reference却是空字符串? 当然可以通过order_id间接确定来源标识,就是要保存reference和order_id的关系,为什么vn.py不在订单其他状态数据也返回委托来源标识内容呢?

Member
avatar
加入于:
帖子: 1471
声望: 105

加载PortfolioManager模块,会自动实现回调推送数据的reference字段映射补全

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

加入PortfolioManager模块可以补全,nice!谢谢!

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

沪公网安备 31011502017034号

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