matlab计算macd_matlab计算MACD指标
matlab计算MACD指标
2018-11-25
%by yupengfang
%利用matlab计算MACD指标,并作图。
clc
clear
close all
data=xlsread("F:\数学建模\数据\平安银行");
xtimes=data(3000:end,:);
newdata=data(3000:end,4);
n=length(newdata);
sema=zeros(n,1);
lema=zeros(n,1);
sema(1)=newdata(1);
lema(1)=newdata(1);
for i=2:n
sema(i)=(2/13)*data(i)+(11/13)*sema(i-1);
lema(i)=(2/27)*data(i)+(25/27)*lema(i-1);
end
dif=sema-lema;
dea=zeros(n,1);
dea(1)=dif(1);
for j=2:n
dea(j)=(2/10)*dif(j)+(8/10)*dea(j-1);
end
finalmacd=2*(dif-dea);
up=find(finalmacd>0);
alldata=zeros(n,1);
alldata(up,4)=finalmacd(up)
dw=find(finalmacd<0);
alldata(dw,1)=-finalmacd(dw)
figure
subplot(3,1,1)
mycandle(xtimes);
axis([0 n 10 45])
subplot(3,1,2)
mycandle(alldata);
axis([0 n 0 max(max(alldata))])
title("MACD")
subplot(3,1,3)
plot(dif,"r");
hold on
plot(dea)
axis([0 n -5 6])
legend("dif","dea")
%by yupengfang
%matlab自带的candle函数可以根据股市数据画出K线图,但是不能区分阴线和阳线。
%本程序可以解决这个问题,思路如下:
%1、利用find函数找出收盘价高于开盘价的数据序号,把序号所在列的数据全部设置为0,则利用
% candle画的K线即为阴线;
%2、利用hold on函数用相同的方法相反操作则可以画出阳线
% clc
% clear
% close all
function mycandle(xtimes)
% data=xlsread("F:\数学建模\数据\平安银行");
data1=xtimes;
len=length(data1);
rise=find(data1(:,1)>data1(:,4));
data2=data1;
data2(rise,:)=0;
data3=data1;
down=find(data1(:,1)
data3(down,:)=0;
stay=find(data1(:,1)~=data1(:,4));
data4=data1;
data4(stay,:)=0;
candle(data2(:,2),data2(:,3),data2(:,4),data2(:,1),"r");
hold on
candle(data3(:,2),data3(:,3),data3(:,4),data3(:,1),"b");
hold on
candle(data4(:,2),data4(:,3),data4(:,4),data4(:,1),"k");
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。
