【金融工程实验】【matlab】使用candle函数画日均k线图

使用candle函数画日均k线图

本实验为课程设计需求

要求

下载一支股票2020年2月、3月的日线数据,并用MATLAB绘制日K线图,要求绘制5日均线和20日均线。

数据

使用海王星软件导出的股票数据,导出工商银行 (601398)在19.2.21到20.4.14的数据

数据读入

filename = '.\601398.txt';
[date,data1,data2,data3,data4] = textread(filename,'%s%f%f%f%f%*[^\n]','headerlines',3);

数据处理

因为要的是2020年2月和3月的数据,匹配字符串所表示的日期。

%% 处理数据
len = length(date) - 1;
data = [];

% data = [data1(1:len),data2(1:len),data3(1:len),data4(1:len)];
for i = 1:len
    t = strsplit(date{i},'/');
    if strcmp(t{1},'2020') && (strcmp(t{2},'02') || strcmp(t{2},'03'))
        data = [data; data1(i),data2(i),data3(i),data4(i)];
    end
end

参考博客http://blog.sina.com.cn/s/blog_6b15ec9e0101iqkn.html

为了用k线图表示开盘价与收盘价之间:升-“红色”、降-“蓝色”、平-“黑色”的关系,需要对数据进行预处理;并且考虑日均线、5日均线、10日均线的区别要处理日期带来的改变。单独写一个函数

function [data2, data3, data4] = daysPlot(data, day)
% 查找二维数组的鞍点(行中最大、列中最小的点)
% Inputs: 
%
% Optional Inputs:
%   	... ... ...
%
% Outputs:
%
% Example:
%   	... ... ...
%
% See also  ... ... ...
%
%   Copyright 2020-2020    ... ... ...
%   $Revision: 1.0.0.0 $   $Date: 2020/04/14 19:05:00 $ 
%
% 其它说明:... ... ...

if (nargin<1)
    error('需要指定参数:A');
end

if (nargin<2 || isempty(day))
    day = 1;
end

%% 
temp = [];
len = numel(data(:,1));
for i = 1:floor(len/day)
    j = 1;
    sumi = [0,0,0,0];
    while (i-1)*day+j <= len
        sumi = sumi + data((i-1)*day+j, :);
        j = j + 1;
    end
    temp = [temp; sumi/(j-1)];
end
data = temp;

%%
% 处理开盘高于收盘
data2=data;
data2(find(data(:,1)>data(:,4)),:)=0;

% 处理开盘低于收盘
data3=data;
data3(find(data(:,1)<data(:,4)),:)=0;

% 处理开盘等于收盘
data4=data;
data4(find(data(:,1)~=data(:,4)),:)=0;

end

显示图形

调用上一部的daysPlot函数

%% 作图
% candle(HI, LO, CL, OP)

% 日均线
[data2, data3, data4] = daysPlot(data, 1);

subplot(1,3,1);
candle(data2(:,2),data2(:,3),data2(:,4),data2(:,1),'b');
hold on
candle(data3(:,2),data3(:,3),data3(:,4),data3(:,1),'r');
hold on
candle(data4(:,2),data4(:,3),data4(:,4),data4(:,1),'k');

ylim([5,5.5]);

% 5日均线
[data2, data3, data4] = daysPlot(data, 5);

subplot(1,3,2);
candle(data2(:,2),data2(:,3),data2(:,4),data2(:,1),'b');
hold on
candle(data3(:,2),data3(:,3),data3(:,4),data3(:,1),'r');
hold on
candle(data4(:,2),data4(:,3),data4(:,4),data4(:,1),'k');

ylim([5,5.5]);
% 10日均线
[data2, data3, data4] = daysPlot(data, 10);

subplot(1,3,3);
candle(data2(:,2),data2(:,3),data2(:,4),data2(:,1),'b');
hold on
candle(data3(:,2),data3(:,3),data3(:,4),data3(:,1),'r');
hold on
candle(data4(:,2),data4(:,3),data4(:,4),data4(:,1),'k');

ylim([5,5.5]);

图形如图所示,从左至右分别为日均线、5日均线、10日均线。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值