如何使用Matlab绘制常见的K线图(蜡烛图)

AuthorBryce230
e-mail2540892461@qq.com
Softwarewin10,Matlab2018a

关于画K线图,Matlab有一个自带的函数candle,画图效率很高,但是它有个缺点,就是画出来的图和我们平时看到的有所不同,candle画出的图如下所示(这里以中国人保为例):
在这里插入图片描述所以,我们要做的是更改K线图,让它变得和我们平时看到的一样,有色彩对比。

操作思路如下:
(1)我们观察图片可知,图片基本可以分为竖线和矩形部分,矩形分为填充和不填充背景颜色,它们在candle对应的程序也比较容易找到;
竖线:

% Plot vertical lines
h(1) = plot(ax,indexVertical(:),hiloVertical(:),'Color',color,'AlignVertexCenters','on');

set(ax,'NextPlot','add')

矩形:

try
    for i = 1 : numObs
        h(i+1) = fill(ax, ...
                [indexLeft(i); indexLeft(i); indexRight(i); indexRight(i)], ...
                [op(i); cl(i); cl(i); op(i)],colorSet{filledIndex(i)},'Edgecolor',color, ...
                'AlignVertexCenters', 'on');
    end
catch ME
    throwAsCaller(ME)
end

(2)接着定义两种颜色(红对阳线,绿对阴线),然后根据K线图的定义进行判断,for循环绘制出不同的颜色。
更改竖线程序:

% Plot vertical lines
for i = 1:numObs
    h(1) = plot(ax,indexVertical(:,i),hiloVertical(:,i),'Color',char(clr(i)),'AlignVertexCenters','on');
    hold on 
end

更改矩形程序:

try
    for i = 1 : numObs
        h(i+1) = fill(ax, ...
                [indexLeft(i); indexLeft(i); indexRight(i); indexRight(i)], ...
                [op(i); cl(i); cl(i); op(i)],char(clr(i)),'Edgecolor',char(clr(i)), ...
                'AlignVertexCenters', 'on');%填充颜色和边缘颜色均需要定义
    end
catch ME
    throwAsCaller(ME)
end

(3)最后利用先前已爬取好的数据,绘制新的K线图(提一句,print函数导出的图片质量很不错,大家可以试试)。

load stock.mat;
candle_c(stock(:,1),stock(:,2),stock(:,3),stock(:,4));
title('中国人保(上证:601319)');
print('K线图', '-dpng', '-r300')

在这里插入图片描述总结
改写函数时,先读懂背后的逻辑关系以及具体函数的语法,思考出具体的思路,再进行动手更改,这样比较节约时间,而不是一上来就更改,毫无头绪。

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值