Advertisement

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");

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

全部评论 (0)

还没有任何评论哟~