笔者在导入的过程中一度找不到导入数据在哪,甚至直接把文件拖拽进工程,最后导致原文件里面的数据表格也不见了;后来笔者百度才发现应该是在主页这个大框下找,导入数据即可。
在导入数据界面会在输出类型看到有五个选项,这里根据教材(北航出版MATLAB数学建模方法与实践),我们选择列向量,则出现如图所示显示方式。至此,获取数据的工作完成。


于是笔者根据教材要求,开始在工作区查看数据具体信息,然鹅笔者没有看到书上那么详细的最小值、最大值、均值、极差等等,于是笔者又百度发现,需要右键名称那一行,选择想要看到的具体数据,如下图所示,方可。双击工作区可放大。

接下来,选取DateNum与Pclose变量进行绘图。

法一:在命令行窗口敲下如下代码
plot(DataNum,Pclose)
法二:笔者根据教材说的选择两个变量然后plot,然鹅笔者百度了很久还是不知道如何选择两个变量。最后发现,点ctrl即可,笔者当场傻掉。因此,这步就是点击一个变量,ctrl长按,再点击另一个变量,在绘图大纲里面点击plot即可画出。
利用doc绘画图例。
doc
价值:我们希望增幅越大越好,也就是曲线的斜率越大越好。
风险:对于同样的走势,用最大回撤来描述风险更合适。
因此,接下来要做的就是计算曲线的斜率与股票的回撤。
采用多项式拟合的方法拟合数据方程,从而得到斜率。
帮助》》搜索polyfit,可查看如何操作

备注: polyfit()函数——采用最小二乘法进行多项式拟合。
polyfit(x,y,n); %对于数据集[x,y],找到次数为n的多项式。
[p E] = polyfit(x,y,n); %多项式系数存在p中,E在polyval函数(多项式预测:y = polyval(p,x);)中计算误差。
使用polyfit拟合时,多项式阶次不能超过length(x)-1。
获得最大回撤
help查询

maxdrawdown函数:计算最大回撤函数,即风险率
%% 导入电子表格中的数据
% 用于从以下电子表格导入数据的脚本:
%
% 工作簿: C:\Users\86135\Desktop\程序_MATLAB数学建模方法与实践_卓金武等\Cha2\sz000004.xls
% 工作表: Sheet1
%
% 由 MATLAB 于 2020-10-12 21:27:49 自动生成
%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 8);
% 指定工作表和范围
opts.Sheet = "Sheet1";
opts.DataRange = "A2:H99";
% 指定列名称和类型
opts.VariableNames = ["Date1", "DateNum1", "Popen1", "Phigh1", "Plow1", "Pclose1", "Volum1", "Turn1"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];
% 导入数据
tbl = readtable("C:\Users\86135\Desktop\程序_MATLAB数学建模方法与实践_卓金武等\Cha2\sz000004.xls", opts, "UseExcel", false);
%% 转换为输出类型
Date1 = tbl.Date1;
DateNum1 = tbl.DateNum1;
Popen1 = tbl.Popen1;
Phigh1 = tbl.Phigh1;
Plow1 = tbl.Plow1;
Pclose1 = tbl.Pclose1;
Volum1 = tbl.Volum1;
Turn1 = tbl.Turn1;
%% 清除临时变量
clear opts tbl
%%数据探索
figure %创建一个新的图像窗口
plot(DateNum,Pclose,'k') %将图的颜色设置为黑色(打印后不失真)
datetick('x','mm'); %更改日期显示类型
xlabel('日期'); %x轴说明
ylabel('收盘价'); %y轴说明
figure
bar(Pclose) %作为对照图形


%%股票价值的评估
p = polyfit(DateNum,Pclose,1); %多项式拟合
P1 = polyval(p,DateNum); %多项式计算求值函数
figure
plot(DateNum,P1,DateNum,Pclose,'*g');
value = p(1)
MaxDD = maxdrawdown(Pclose);
risk = MaxDD

本文章使用limfx的vscode插件快速发布