vn.py量化社区
By Traders, For Traders.
Administrator
avatar
加入于:
帖子: 1408
声望: 63

description

对于安装了VNStudio的用户,启动VN Station后,直接点击右下角的更新按钮就能完成自动更新。

对于没有安装的用户,请下载VNStudio-2.0.6,体验一键安装的量化交易Python发行版。

K线图表功能

首先要重点感谢的是我们vn.py核心开发团队的nanoric,在K线图表的技术选型方面做了很多前瞻性的研究工作,有了这些研究的成果最终我们才能开发出vnpy.chart高性能K线图表组件。同时也非常感谢Github上的moonnejs/uiKLine项目,在K线的图形绘制方面给了我们很多启发。

社区里对于K线图的需求提了已经差不多四年的时间,整体上可选的技术方向包括:

  • Web类图表
    • 如TradingView、ECharts等
    • 优点:现成工具库、WEB效果炫酷
    • 缺点:需要在浏览器中运行,且跨语言开发难度较大
  • Python绘图库
    • 如Matplotlib、Chaco、PyQtGraph等
    • 优点:易学易用(纯Python),方便整合到GUI中
    • 缺点:全量刷新性能较差,增量刷新需要自行实现(相当复杂)
  • C++绘图库的Python封装
    • PyQtChart和PyQt
    • 优点:C++理论上是性能最牛逼的选择了(实际嘛...)
    • 缺点:一个是比较底层,另一个就是实际性能了...

首先尝试的是Matplotlib,作为Python标准绘图库,用起来是很方便,但是对于需要动态更新数据的K线图来说,全量刷新模式的效果实在太差,FPS特别低不说,数据量一大还直接就容易卡成幻灯片。

其次就开始尝试TradingView,通过外部浏览器来实现图表的查看,或者使用PyQt内置的浏览器模块QWebEngine实现GUI嵌入,尽管可以跑通,但Python和浏览器毕竟是两个跨语言的隔离环境,单向的数据传递(从Python中发起绘图)还比较方便,一旦涉及双向的数据传递就会十分麻烦(如K线动态添加、捕捉鼠标位置访问底层数据等),且从交易员的角度可定制扩展性太差(html/css/javascript,杀了我吧....)。

第三个选择是PyQtChart,基于C++实现的K线图绘制,再加上QtChart是Qt官方实现的扩展库,理论上质量应该杠杠的。结果却是和预期出入最大的一个方案,刷新效率低的不行(比幻灯片好一点点),看了C++源代码后,发现诸数据添加、图形刷新的操作都是O(N)的算法,而且代码质量和Qt核心库也完全不是一个档次(找的不靠谱外包?),再次毙掉。

最后剩下的路径就是自己造轮子了,分别尝试了基于PyQt和PyQtGraph的两套方案后,发现绘图效率和图形效果差距不大,考虑尽可能减少vn.py项目中和交易无关的代码行数,最终选择了相对上层的PyQtGraph开发的方案。

从2019年的一季度定下开发计划,到折腾完这堆方案最终完成,已经过去了足足半年的时间,最终整个模块包含以下五大组件:

  • BarManager:K线序列数据管理工具
  • ChartItem:基础图形类,继承实现后可以绘制K线、成交量、技术指标等
  • DatetimeAxis:针对K线时间戳设计的定制坐标轴
  • ChartCursor:十字光标控件,用于显示特定位置的数据细节
  • ChartWidget:包含以上所有部分,提供单一函数入口的绘图组件

从基础的静态K线序列数据显示、交互式数据查询,到更复杂的动态K线更新、自定义图形组件添加等,全部在不到1100行的代码中实现。针对PythonK线图表的这一需求,vnpy.chart算是我们终于交出了的一份满意答卷:

description

关于vnpy.chart的使用方法,请通过examples/candle_chart样例查看,同时我们也使用该模块实现了CtaBacktester(CTA回测)模块中,将策略回测的成交记录通过K线图展示出来的功能。

交易接口

主要两个更新内容:

  1. 新增针对CTP Mini极速期货柜台的MiniGateway和MinitestGateway(仿真测试),应该算是最适合高频以外客户的通用极速柜台了。

  2. 针对所有数字货币类接口,补全历史数据查询功能;现在所有的数字货币类CTA策略每天初始化时都可以直接从服务端获取最新的数据,而无需用户再自行录制历史行情了;其中币安和BitMEX两个接口还提供多年完整的分钟线历史数据,完全满足策略开发研究的需求。

线下活动

针对2.0.5和2.0.6的新增功能,这周六将在上海组织vn.py社区2019年的第八次线下活动,主题内容如下:

  1. 会用Jupyter Notebook,就能开始实盘量化交易
  2. 基于ScriptTrader模块的常用脚本交易策略分享
  3. 使用RpcService模块实现多进程分布式的vn.py应用部署
  4. 使用vnpy.chart定制开发各种量化图表
  5. QA问答环节

时间:7月27日 14:00-17:00
地点:浦东新区芳甸路1155号4楼WeWork
名额:40人
报名费:99元

报名请扫描下方二维码:

description

Member
avatar
加入于:
帖子: 4
声望: 0

新版本支持多品种交易吗?

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