配置:
plots:
-
max_height: 0
chart_item:
-
file_name: ../../data/ochl.txt
type: Candle
-
file_name: ../../data/EMA5.txt
type: Line
-
max_height: 200
chart_item:
-
file_name: ../../data/MACD12.26.9.txt
type: Macd
-
max_height: 100
chart_item:
-
file_name: ../../data/volume.txt
type: Volume
1 此配置表示plot画图分三个块,最上面的高度最大,中间的高度为200,最下面的高度为100
2 最上面的图形有两个图层组成,第一层为K线,第二层为EMA5线,中间图形显示macd,最下面的显示成交量
3 数据由file_name提供,画图方式由type类型提供,若为Candle表示画K线,Line表示画曲线图,Volue表示画柱状图,Macd表示画macd图
画图效果:
程序实现:
datas = load_data(conf)实现将数据装载进内存, 这是一个嵌套dict的数据结构,第一层嵌套表示有几个plot组成,即整个图形是分为上中下的还是只是上下或是单个plot图,第二层表示各plot图中是由几层ChartItem图表覆盖的,在我们这里配置的第一层plot0是先画CandleItem,再画LineItem。
通过update_all_history_data将数据分发到各实现模块ChartItem中,需要注意的是
self._manager.update_history_data的调用,由于每个plot图形最终需要确定最高是多少,最低是多少,因此需要知道这个图形中所有的ChartItem中的数据,这儿做统一处理。
留白:
其实内部的逻辑还是有不少需要说的,源自vnpy不过原先的代码基本被干的七七八八了,只保留画图的底层实现,数据逻辑也完全改了,因之前的数据结构太死,程序与数据捆成一拓,无法达成根据配置实现图形的组合显示。后面有时间会把这些数据结构讲一下,当然,这是最基本实现,目的是为了看清楚量化算法中那些图形的细节。
最后直接上代码:klinechart: 股票K线图表 - Gitee.com
|