量化系统界面化,可视化数据可视化一直是大数据时代一个很重要的命题。人类的天性,对图表的认知远胜于数据本身。 另外一个就是交互界面。vnpy比较成功,在于它给出了基于pyqt5的界面。另外传统的股票软件像同花顺,大智慧这种winform形态,也适合在电脑上进行操作。 h5形态的web开发部署成本相对较低,但交互起来还是有其不方便的地方,另外最重要的交易策略,出于安全考虑也不太可能云端化。 web适合给大众,to c,需要广泛传播,无需安装。 winform在python下的开发,也非常简单,python简直无敌了! 先搭个架子,如下图: ![](http://image109.360doc.com/DownloadImg/2023/10/1215/273692326_1_20231012033808163_wm.jpeg)
from PyQt5 import QtWidgets from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt from common.logic import basic_info
def init_tree(tree): root = QTreeWidgetItem(tree) # 设置根节点的名称 root.setText(0, 'A股')
tree.addTopLevelItem(root)
indus = basic_info.get_indusries() for indu in indus: child = QTreeWidgetItem(root) child.setText(0, str(indu['code'])) child.setText(1, indu['name'])
for sub in indu['sub']: sub_item = QTreeWidgetItem(child) sub_item.setText(0, str(sub['code'])) sub_item.setText(1, sub['name'])
def init_left_tree(): # 左侧区域 dock_left = QDockWidget('行业') dock_left.setFeatures(QDockWidget.DockWidgetFloatable) dock_left.setAllowedAreas(Qt.LeftDockWidgetArea)
tree = QTreeWidget() # 设置部件的列数为2 tree.setColumnCount(2) # 设置头部信息,因为上面设置列数为2,所以要设置两个标识符 tree.setHeaderLabels(['一级行业', '二级行业']) init_tree(tree) dock_left.setWidget(tree) return dock_left
def init_dock(parent): #初始化一个多tab组件 tab = QtWidgets.QTabWidget() tab.addTab(QtWidgets.QLabel("量化选股"), "量化选股") tab.addTab(QtWidgets.QLabel("行业分析"), "行业分析") tab.addTab(QtWidgets.QLabel("回测引擎"), "回测引擎") tab.setCurrentIndex(0) parent.setCentralWidget(tab)
dock_left = init_left_tree() parent.addDockWidget(Qt.LeftDockWidgetArea,dock_left)
dock_bottom = QDockWidget('系统运行信息') dock_bottom.setFeatures(QDockWidget.DockWidgetFloatable) dock_bottom.setAllowedAreas(Qt.BottomDockWidgetArea)
dock_bottom.setWidget(QTextEdit())
parent.addDockWidget(Qt.BottomDockWidgetArea, dock_bottom)
关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
|