Matlab如何绘制股票K线
新年快乐。很高兴能够在2018年的第一个周末与大家分享最近一段业余时间我所倒腾的事。
前不久,我在同花顺的APP上发现了一个比较有意思的功能,K线训练营。而其中有一项是挑战AlphaHua,AlphaHua是同花顺开发的人工智能交易算法。
由于平时在使用过程中,时常会出现好几次PK都是在同一年份,又或者是同一只股票。于是我就想,是不是可以自己通过Matlab来实现一个K线训练营的这样一个工具。
对于实现这个工具,我将步骤细化为以下几步:
截至目前,这个工具还没有完成,只是初步实现了股价的可视化,也就是K线的绘制。先来看一下整体的效果。
今天就来聊一聊在过去的这一周我是如何完成这个小功能的。
就绘制K线图而言,我曾经尝试在网上进行搜索,最先得到的答案是,Matlab自带绘制K线图的函数,candle,绘制的效果大致如下所示:
从图中可以看出,candle绘制的K线默认颜色是蓝色,其中实心柱体表示跌,空心柱体表示涨。而对于A股,无论是媒体或者是相关的平台工具,我们一直接受的观念是,红色空心柱体表示涨,绿色实心柱体表示跌。因此,也有许多人发帖询问如何对K线图的颜色进行定义。
对于K线图涨跌的颜色定义,我再次在网上进行了搜索,很快就在网上找到了相关的代码,有兴趣的朋友可以查看一下这篇帖子《K线图以及常用技术指标的Matlab实现-基于Matlab的量化投资》。对于其中所给出的代码,我进行了尝试,效果如下:
从图中可以看出,这个代码已经能够满足涨跌颜色定义的需求。回过头来看这个代码,其中关于K线柱体的绘制代码如下:
其中大致的逻辑是,通过一个循环,对下跌或者上涨的每个柱体进行fill的填充。
由于循环所产生的后果将会是导致运算速率的损失,进行一个简单的对比:
从图中可以看到,对于一组1504个交易日的数据,第二种自定义函数耗时大约为1.8秒,而自带的candle函数耗时大约为0.3秒。有兴趣的朋友可以通过open candle查看其中的代码,没有使用循环。
出于计算效率的考虑,我打算自己对candle进行改写,从而满足K线图涨跌颜色定义的需求。改写的部分很简易并且容易实现,只是通过颜色的区分定义,分别定义上涨颜色与下跌颜色,然后查找代码中关于对Color设定部分的代码进行修改。
而对于相同的1504个交易日数据绘图,耗时大约为0.6秒。耗时长于candle的原因在于,对于上影线与下影线,并不是统一定义为一个颜色,也是根据涨跌分别进行颜色定义,这是有别于candle计算效率的部分。
在完成股价的可视化之后,再去绘制成交量也就不是难事了。我最先想到的是使用Matlab自带的画柱状图的函数bar。画出来的效果大致是:
同样所碰到的问题是颜色单一,并不美观。于是我再一次使用candle进行改写,利用其中画柱状图部分的代码,设置起始点为0即可。画出来的效果大致是:
至于其他的细节,已经没有特别有趣的点了,大致是对横纵坐标的处理,subplot等。而在接下来的两周,我将会着手进行K线训练营工具界面的设计,希望到时候有机会与大家分享。
以上就是今天分享的内容,谢谢大家,祝各位周末愉快。
如果你感兴趣,欢迎关注我的微信公众号“打浦桥程序员”,谢谢