%%此程序用来计算MACD指标并对其有效性进行回测检验
%%原始数据命名为stk_clpr,且第一列为收盘价,第二列为交易日期
%% 计算相关指标(这里也可编一个函数),第一天初始化:DIFF=DEA=MACD=0,EMAshort=EMAlong=第一天的收盘价
%虽然matlab有自带的函数macd(),它貌似只能计算默认长度的平滑移动平均,还是自己算理解更深刻
clpr=stk_clpr(:,1);%提取收盘价
date=stk_clpr(:,2);%提取日期
%定义计算长度
shortPeriod=12;%定义收盘价短期(快速)平滑移动平均计算长度
longPeriod=26;%定义收盘价长期(慢速)平滑移动平均计算长度
DEAPeriod=9;%定义diff线平滑移动平均计算长度
%建立占位矩阵,提高程序运行效率
EMAshort=zeros(length(clpr),1);
EMAlong=zeros(length(clpr),1);
DIFF=zeros(length(clpr),1);
DEA=zeros(length(clpr),1);
MACD=zeros(length(clpr),1);
%用循环语句计算各个指标(这里用向量不管用)
EMAshort(1)=clpr(1);%初始化EMAshort第一值
EMAlong(1)=clpr(1);%初始化EMAlong第一个值
DEA(1)=0;%初始化第一值
DIFF(1)=0;
MACD(1)=0;</