前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何利用vn.py动态选择主力合约?

如何利用vn.py动态选择主力合约?

作者头像
用Python的交易员
发布2018-07-26 11:58:22
1.4K0
发布2018-07-26 11:58:22
举报
文章被收录于专栏:维恩的派VNPIE

在上一篇文章中介绍了一个‘如何利用vn.py记录指数行情?’的思路,本文将介绍‘如何用vn.py动态选择某一品种的主力合约’。感谢‘图扬量化’在「维恩的派」论坛内的分享!

主力合约

所谓主力合约指的是成交量最大的合约。因为它是市场上最活跃的合约,所有投机者基本上都在参与这个合约。也有说法是主力合约是持仓量最大的合约,因为通常来讲,持仓量最大的合约也是成交量最大的合约。

交易逻辑

如果策略是根据各品种加权指数来进行多空决策,再通过跟踪指数的方式来进行实际交易,这里就存在一个按持仓量比例映射交易合约头寸的问题,大多数情况下,一个品种的主力合约及次主力合约会占据绝大部分持仓权重,所以我们一般关心主力和次主力合约就够了。

设计思路

1. 在每次软件启动时,从交易服务器一次性获取所有期货合约信息(CtpGateway类的onRspQryInstrument 处理该查询),并推送至dataEngine,在dataEngine的processContractEvent方法中,将其存储于一个字典当中(保存到文件以便每次重启软件可用,仅当合约有变化时,如最近月合约到期,最远月合约生效,该字典才会被更新); 2. 从该字典中可获取所关注品种的当前所有有效合约,全部订阅; 3. 在dataEngine中的updateTick(处理订阅合约的tick推送的方法)中,将同品种所有合约的tick推送保存于另一个字典中,并在此时实时按照持仓量从大到小排序,这样按顺序取对应的合约就是主力、次主力等等了。如需显示于GUI,将其tick信息推送至上层就ok了。

备注

  1. 以上内容有部分是框架已实现的,可直接重用或稍作改进即可。
  2. 排序代码类似如下,具体解释请自行度娘: sorted(self.fullContractDict[type].items(), key=lambda d: d[1][0], reverse=True)

效果展示

(可进入论坛查看更清晰的效果图。)

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

Developed by Traders,

for Traders

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 维恩的派VNPIE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档