ricequant / rqalpha

A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities
http://rqalpha.io
Other
5.38k stars 1.61k forks source link

本地使用分钟数据,内存以肉眼可见速度增加 #509

Open zhiyiZeng opened 4 years ago

zhiyiZeng commented 4 years ago

提 ISSUE 须知

请先阅读文档 rqalpha文档

如果仍有问题的话请在 issue列表 中寻找是否有相关问题的解决方案

如果没有的话 麻烦开一个issue 描述以下问题:

1. RQAlpha的版本

4.X

2. Python的版本

3.7

3. 是Windows/Linux/MacOS or others?

windows10

4. 您出现问题对应的源码/或者能复现问题的简易代码 以及对应的配置

只是把源码里读天数据的加了个if判断能读自己的分钟数据。具体代码就不贴了吧,毕竟原来不支持本地读分钟,怕影响你们生意(手动狗头)

5. 您出现的错误堆栈日志信息

最后会显示内存不足,报错在读数据那块显示数据的shape,然后显示内存不足。

自己修改了部分源码,使得本地可以按天读分钟数据,跑几只股票可以,但是几百只股票的分钟数据for循环下单就会1秒增加几百M的内存。请问是不是缓存没及时清空(但是我都是在原函数里改了一些,应该不影响缓存)?一只股票的所有分钟数据大概再50-60M左右,所以1秒加几百M差不多匹配。

感谢如此优秀框架~

xujun05 commented 4 years ago

用的数据库吗?如果是,我遇到过这个问题

zhiyiZeng commented 4 years ago

用的hdf5。请问你用数据库的情况下解决了么?

xujun05 commented 4 years ago

我数据库的话是连接释放问题,其他不会增加内存

zhiyiZeng commented 4 years ago

噢噢,那咱俩应该不是一个问题,我试过手动释放hdf5文件的句柄,没有效果。还是感谢兄弟~

xujun05 commented 4 years ago

噢噢,那咱俩应该不是一个问题,我试过手动释放hdf5文件的句柄,没有效果。还是感谢兄弟~

客气了,我的是数据库连接,如果是文件,每天要更新,岂不是很麻烦啊

zhiyiZeng commented 4 years ago

还好,就是多写段处理h5的代码。存数据库是不是得挤爆啊,之前想过用数据库,但是这样得把数据库挤爆吧....

zhiyiZeng commented 3 years ago

@xujun05 老哥,请问你本地回测的速度是多快呢?用的什么数据库呢?我把缓存爆炸的问题解决了,现在问题在IO上,一半时间耗在h5上,速度比rqalpha线上回测还慢了50%的样子。想换数据库试试。

谢谢了!