Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能不能考虑提供策略参数持久化的支持? #52

Closed
haogefeifei opened this issue Mar 1, 2017 · 10 comments
Closed

能不能考虑提供策略参数持久化的支持? #52

haogefeifei opened this issue Mar 1, 2017 · 10 comments

Comments

@haogefeifei
Copy link

策略回测的时候参数都在内存里面没有问题,实盘的话考虑要程序的启停

@cedricporter
Copy link
Member

cedricporter commented Mar 1, 2017

已经有了,实现一个 persist_provider 就可以了。

有个 DEMO : env.set_persist_provider(persist_provider)

https://github.com/ricequant/rqalpha/blob/master/rqalpha/mod/rqalpha_mod_sys_stock_realtime/mod.py#L33

@haogefeifei
Copy link
Author

好。

@hzliu
Copy link
Contributor

hzliu commented Mar 6, 2017

在 utils 里有一个 DiskPersistProvider 可以直接使用

@haogefeifei
Copy link
Author

haogefeifei commented Mar 11, 2017

from rqalpha.utils.disk_persist_provider import DiskPersistProvider
persist_provider = DiskPersistProvider()

persist_provider.store('code', bytes('600325'))
print persist_provider.load('code')

恩,用这个可以了。。 建议最好增加类似Redis Python Client里面使用*通配符key查询,Linux Mac命令是支持用通配符过滤文件的,不过这样的实现方法可能不兼容Windows,还有最好有个删除方法

@wh1100717
Copy link
Member

@haogefeifei 可否列出来一个详细的你觉得更好的持久化的方案,我们会讨论决定是否列入之后Future Feature Dev 中

@haogefeifei
Copy link
Author

可以借鉴下其他地方的做法,比如现在提供的DiskPersistProvider功能和Android的SharedPreferences是非常类似的,只有key value的get set,Google在Android SDK同时还提供SQLiteOpenHelper来满足更复杂数据结构的存储需要。可以考虑选一个python sqlite支持多线程的模块内置。

@haogefeifei
Copy link
Author

haogefeifei commented Mar 13, 2017

还就是DiskPersistProvider可以参考SharedPreferences接口写法写的更健壮些,get(load)方法加一个参数,即key取不到value时返回的默认值。

@wh1100717
Copy link
Member

@haogefeifei 多谢~ Persist扩展确实可以提高第三方扩展的易用性,这块我们会讨论并决定具体的扩展形式,不过目前看来,排期应该不会特别的早,可能有一些优先级更高的事情在做。
anyway thx~~

@haogefeifei
Copy link
Author

嗯嗯

@cedricporter
Copy link
Member

cedricporter commented Nov 21, 2017

目前已经有框架级别的持久化支持,已经稳定运行很长时间了。

开源版本内置了一个简单的 DiskPersistProvider ,可以将需要的持久化的数据写到本地磁盘上。

如果需要,可以在自定义 mod 的 start_up 中设置 config.base.persist = True,然后添加 persist_provider 。

from rqalpha.utils.disk_persist_provider import DiskPersistProvider

persist_provider = DiskPersistProvider(persist_path)
env.set_persist_provider(persist_provider)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants