[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码
发布:weitingkoala | 分类:Matlab软件培训
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
经管之家新媒体交易平台
提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】
TOP热门关键词
这是一个简单交易策略(基于MACD)的Matlab代码,说明:1.这是之前练习时写的,对于其中的算法,我不能保证正确,请各位批判性思考2.本代码用于交流学习,大牛轻拍[hide]%%此程序用来计算MACD指标并对其有效性进行回 ...
免费学术公开课,扫码加入 |
[hide]
- %%此程序用来计算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;
- for t=2:length(clpr);
- %计算短期和长期EMA
- EMAshort(t)=clpr(t)*(2/(shortPeriod+1))+EMAshort(t-1)*((shortPeriod-1)/(shortPeriod+1));
- EMAlong(t)=clpr(t)*(2/(longPeriod+1))+EMAlong(t-1)*((longPeriod-1)/(longPeriod+1));
- %计算DIFF
- DIFF(t)=EMAshort(t)-EMAlong(t);
- %计算DEA
- DEA(t)=DIFF(t)*(2/(DEAPeriod+1))+DEA(t-1)*((DEAPeriod-1)/(DEAPeriod+1));
- %计算MACD
- MACD(t)=2*(DIFF(t)-DEA(t));
- end
- %画出行情序列图和各指标变化图
- figure(1);
- subplot(3,1,1);
- plot(date,clpr,'r');
- datetick('x','yyyymmdd');
- xlabel('Date');
- ylabel('Close Price');
- title('Time Series of Stock');
- grid on;
- subplot(3,1,2);
- plot(date,DIFF,'g',date,DEA,'b');
- datetick('x','yyyymmdd');
- legend('DIFF','DEA');
- xlabel('Date');
- ylabel('DIFF and DEA');
- title('The DIFF and DEA of Stock');
- grid on;
- subplot(3,1,3);
- plot(date,MACD,'r');
- datetick('x','yyyymmdd');
- xlabel('Date');
- ylabel('MACD');
- title('The MACD of Stock');
- grid on;
- %% 策略回测仿真
- %%一个最简单的策略:1)DIFF向上突破MACD且连续三天处于MACD之上,则为买入信号;2)DIFF向下穿过MACD且连续三天处于MACD之下,则为卖出信号
- %初始资金10000元
- initial=10000;
- %定义仓位:1表示多头,0表示空仓
- pos=zeros(length(clpr),1);
- %定义收益序列
- Return=zeros(length(clpr),1);
- figure(2);
- plot(date,clpr,'r');
- datetick('x','yyyymmdd');
- xlabel('Date');
- ylabel('Close Price');
- title('Time Series of Stock');
- grid on;
- hold on;
- %策略计算
- for t=5:length(clpr)
- %定义买卖信号
- signalBuy=(DIFF(t)>MACD(t) && DIFF(t-1)>MACD(t-1) && DIFF(t-2)>MACD(t-2) && DIFF(t-3)<MACD(t-3) && DIFF(t-4)<MACD(t-4));
- signalSell=(DIFF(t)<MACD(t) && DIFF(t-1)<MACD(t-1) && DIFF(t-2)<MACD(t-2) && DIFF(t-3)>MACD(t-3) && DIFF(t-4)>MACD(t-4));
- %如果是买入信号且为空仓,则买入
- if (signalBuy==1 && pos(t-1)==0)
- pos(t)=1;
- text(date(t),clpr(t),'\leftarrow买');
- plot(date(t),clpr(t),'go');
- %如果是卖出信号且为多仓,则卖出
- elseif (signalSell==1 && pos(t-1)==1)
- pos(t)=0;
- text(date(t),clpr(t),'\leftarrow卖');
- plot(date(t),clpr(t),'bo');
- %其它情况一律不进行任何操作
- else pos(t)=pos(t-1);
- end
- end
- %计算资金变化情况,交易成本假设为单边千分之三
- Return(1)=initial;
- for t=2:length(clpr)
- %空仓且没有买入信号
- if pos(t)==0 && pos(t-1)==0
- Return(t)=Return(t-1);
- continue;
- end
- %买入
- if pos(t)==1 && pos(t-1)==0
- Return(t)=Return(t-1)*(1-0.003);
- continue;
- end
- %持仓并且无卖出信号
- if pos(t)==1 && pos(t-1)==1
- Return(t)=Return(t-1)*(clpr(t)/clpr(t-1));
- continue;
- end
- %卖出
- if pos(t)==0 && pos(t-1)==1
- Return(t)=Return(t-1)*(clpr(t)/clpr(t-1))*(1-0.003);
- continue;
- end
- end
- %% 模型评价:收益率,夏普比率,绝对收益率,最大回撤等一些列指标,这里只画资金变化曲线
- %画出资金变化曲线
- hold off;
- figure(3);
- plot(date,Return,'r');
- datetick('x','yyyymmdd');
- xlabel('Date');
- ylabel('Your Money');
- title('The Return of Stock');
- %画出持仓情况
- figure(4);
- plot(date,pos,'b');
- datetick('x','yyyymmdd');
- xlabel('Date');
- ylabel('The state of your account');
[/hide]
[hide]
[/hide]
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
人气文章
本文标题:[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码
本文链接网址:https://bbs.pinggu.org/jg/ruanjianpeixun_matlabruanjianpeixun_2897483_1.html
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。