| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> vnpy试用candle_chart -> 正文阅读 |
|
[大数据]vnpy试用candle_chart |
好久之前听过vnpy,前两天看到还在更新,觉得可以研究一下。 主要是对其中的K线的UI 写期货回测最主要的是图形化的工具比较缺,都是用数字图表,不直观。前段时间用plot画图,发现画出来的都是静态的,且数据量多后慢的要死。 看起来这个UI画的K线要好很多,值得研究一下。 网上有说明vnpy可保存为sqlite和mongdb. 一开始用的是sqlite,原因是无需安装,直接用,按照说明下载对应的组件,因为数据源这块vnpy已经抽象出BaseDatabase,需要用到哪一种组件再实现对应的组件,sqlite实现为vnpy-sqlite 先把数据准备好: 图中表示的是RBL9的1分钟的数据,我们只需要将其转换为vnpy识别的格式,然后利用vnpy提供的接口即可实现数据存入sqlite,最终通过 save_bar_data(self, bars: List[BarData]) 接口将数据存入,不过我在存入的时候遇到了不小的问题: 1)sqlite要求存入时间时是一个指定格式的字符串,而提供的组件还是按照datetime格式存入的,导致无论如何存不进去。后来没有办法,强行在存入时修改为字符串,存进去的格式如下: 然后发现存进去了,取的时候又是按照datetime格式取出来的,而且 取的时候用的是这个接口: load_bar_data, 一定要求输入开始时间和结束时间,使用datetime转换出来的格式为2021-01-05 00:00:00,这个东西作为参数直接就获取不到数据。实在不想重头改到尾,放弃使用sqlite,考虑使用mongodb(网上能成功的我看了一下应该代码比较旧了,我拉取的代码为: 因此之前网上的所有的做法由于代码的变动都失效了。 改用mongodb的比较容易 ,直接到官网上下载mongodb-windows-x86_64-5.0.6-signed.msi,进行安装后运行即可。 然后在vnpy的运行目录加上mongo的配置: ?至此,主要的工作就做完了,剩下的就是将表格中的数据与 BarData的数据对齐即可 由于datetime是一个时间数据,在表格中我们是用两个字段来表示的,这一步比较费点精神:
然后把字段名再进行对齐:
最后通过接口把数据存入mongdb即可:
注意,存的过程会报错,这个没有去深究,因为我确定已经存成功了: 后面回头看了下错误细节: 百度搜索一下,确认是由于pymongo从4.1开始移除了update等相关函数,所以需要安装早一点版本的,看了一下系统的确实安装了4.0.1的pymongo,查看?vnpy_mongodb-1.0.1源码,在setup.cfg中查找到依赖项: 将之前的pymongo删除,安装指定版本,再次运行save_data.py, 发现错误消失 存完了以后可以直接运行candle_chart中的run.py,如果没有数据,运行的效果图如下: 数据存入成功后运行的效果图如下: ? ?最后附上save_data.py代码:
最后感谢网上一个哥们的代码,很多做了参照,一下子找不到他的相关链接,后面找着了会补上参照的相关文章。? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:37:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |