接着搞AI量化平台的GUI,今天两个任务:一是整合quantstats,二是独立弹窗可以编辑策略的toml文件。
QuantStats之间无故报错,查出来是matplotlib的版本问题,将matplotlib由3.2.2升级至3.7.2即可。
使用webpanel来显示quantstats的回测结果:
import wx import wx.html2 as web class WebPanel(wx.Panel): def __init__(self, parent, id=-1): super(WebPanel, self).__init__(parent, id) vbox = wx.BoxSizer(wx.VERTICAL) self.SetSizer(vbox) self.browser = web.WebView.New(self) vbox.Add(self.browser, proportion=-1, flag=wx.EXPAND | wx.ALL, border=10) def show_url(self, url): self.browser.LoadURL(url) def show_file(self, filename): with open(filename, 'r', encoding='utf8') as f: html_cont = f.read() self.browser.SetPage(html_cont, "") self.browser.Show()
elif msg_type == 'DONE': html = DATA_RESULTS.joinpath(self.combo_proj.GetValue()+'.html') if os.path.exists(html): print('显示文件') self.webpage.show_file(html)
效果如下图所示:
代码已经在星球更新:
wxpython开发,可以使用xwFormBuilder来布局,类似pyQt的QTDesigner。
https://github.com/wxFormBuilder/wxFormBuilder/releases
直接下载编译好的安装包。
可以自动生成python代码:
这一点还是非常方便的,尤其是对wxpython不熟的新手们。
如下代码就实现了当combobox切换时,下边的回测结果会随着改变:
def _combo_changed(self, e): self._show_html() def _show_html(self): html = DATA_RESULTS.joinpath(self.combo_proj.GetValue() + '.html') if os.path.exists(html): print('显示文件') self.webpage.show_file(html)
通过窗口加载策略配置文件:
def _on_edit_proj(self, e): dlg = DialogProj(None) with open(DATA_PRJ.joinpath(self.combo_proj.GetValue()+'.toml'), 'r', encoding='utf-8') as f: config = f.read() dlg.show_codes(config) dlg.ShowModal() dlg.Destroy()
策略编辑是一方面,后续的工作包括数据管理与更新,这是一块。
本地数据库方面,之前使用用CSV/HDF5的方案,更新上会存在麻烦,而使用mongo在本地又显得重,不方便拷贝。今天看到一个方案,使用sqlite这样的关系型数据库,没准可以试试。
然后就是因子分析,因子挖掘,机器模型训练系统。
一些思考:
最近天气实在太热,各种负向新闻似乎有点多。
搞理财久了,老在想,如果给你一个亿财富自由了,你会做什么?
其实可能想不明白,郭宇有郭宇的生活方式,老俞有老俞的生活状态。终归都会做一些有意义的事情,而很多事情,就像游戏中的关卡一样,没有解锁的时候,是很难想象到的。
做好当下的事情,珍惜眼前的生活,不必思虑过多。
但行好事,莫问前程。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104075
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!