今天实现了因子编辑器,这是咱们AI量化系统最重要的部分,很多同学就是不知道因子如何计算,以致于不理解策略怎么写。
这里我做了一个表达式编辑器,基本流程走通了,——还没有完全串起来。
这里代码如下(代码已经更新至星球,大家可以前往下载):
from gui.panels.dlg_editor import DlgEditor import wx from engine.config import IMAGE_DIR class EditorUtils: def __init__(self): self.dlg = DlgEditor(None) self.image_list = wx.ImageList(16, 16) self.image_list = wx.ImageList(16, 16) lab = IMAGE_DIR.joinpath('root.png').resolve() folder = IMAGE_DIR.joinpath('folder.png').resolve() ind = IMAGE_DIR.joinpath('ind.png').resolve() self.root_icon = self.image_list.Add(wx.Image(str(lab), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap()) self.folder_icon =self.image_list.Add(wx.Image(str(folder), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap()) self.ind_icon =self.image_list.Add(wx.Image(str(ind), wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap()) self.dlg.tree_rules.SetImageList(self.image_list) self._init_tree_inds() self.dlg.tree_rules.Bind(wx.EVT_TREE_SEL_CHANGED, self.on_sel_changed) self.dlg.tree_rules.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.on_double_clicked) def show_model(self): return self.dlg.ShowModal() def on_double_clicked(self, e): item = e.GetItem() data = self.dlg.tree_rules.GetItemData(item) if data: if 'expr' in data.keys(): self.dlg.text_rules.SetInsertionPoint(0) self.dlg.text_rules.AppendText(data['expr']) #self.dlg.label_tips.SetLabelText(data['help_text']) def on_sel_changed(self, e): item = e.GetItem() data = self.dlg.tree_rules.GetItemData(item) if data: if 'help_text' in data.keys(): self.dlg.label_tips.SetLabelText(data['help_text']) def _init_tree_inds(self): data = { '价量指标': {'open': {'help_text': '开盘价','expr':'open'}, 'high': {}, 'low': {}, 'close': {}, 'volume': {} }, '时间序列函数': {'shift': {}, 'rsrs': {'help_text': '光大RSRS指标','expr':'rsrs(high,low,18)'}, 'roc': {}, 'slope': {}} } tree = self.dlg.tree_rules root = tree.AddRoot("指标与函数集合") self.dlg.tree_rules.SetItemImage(root, self.root_icon, wx.TreeItemIcon_Normal) for text, category_data in data.items(): category_item = tree.AppendItem(root, text) self.dlg.tree_rules.SetItemImage(category_item, self.folder_icon, wx.TreeItemIcon_Normal) for ind, item_data in category_data.items(): node_item = tree.AppendItem(category_item, ind) self.dlg.tree_rules.SetItemImage(node_item, self.ind_icon, wx.TreeItemIcon_Normal) tree.SetItemData(node_item, item_data) tree.ExpandAll()
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104015
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!