您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > 基于MATLAB股票市场的线性预测
基于MATLAB股票市场的线性预测摘要:随着计算技术和信息科学的飞速发展,信号处理逐渐发展成一门独立的学科,成为信息科学的重要组成部分,广泛应用在经济、金融等各种领域中,其中线性预测是最为广泛的一种方法。本设计借助MATLAB的技术工具软件对股票价格的数据信号图进行分析,来构造一个线性预测器。并用MATLAB生成一个豪华的界面,把线性预测的结果直观、明了的表现出来。本设计在理解信号与系统基本原理的前提下,利用MATLAB设计了一个线性预测系统,该系统利用一个离散时间有限脉冲响应(FIR)滤波器来解决属于预测建模等问题。这是一个基于MATLAB计算机仿真的股票线性预测模型,它用股票的开盘、收盘、最高、最低四种价位为源信号进行预测,可以选择滤波器的阶数来调整它的精确度,能够做到预测误差最小。关键词:线性预测系统、MATLAB、离散时间有限脉冲响应(FIR)滤波器1.股票线性预测的原理本文设计一个系统,它能够单独的根据过去的值预测x[n]信号的将来值。对于线性预测来说,这个系统是一个FIR滤波器,它根据过去值的一种线性组合算出一个预测量:pkkknanX1(1-1)式1-1中的就是预测值。因为用了信号先前的p个值构成这种预测,所以这是一个p阶预测器。给定某一固定的滤波器阶p,线性预测问题就是要确定一组滤波器系数,以使得“最好的”实现1-1的预测确实这个“最好”系数的最常用的准则是某些系数,使得总的平方预测误差达到最小:2121||||NnNnnxnxneE(1-2)式1-2中,假设序列x[n]的长度为N,有几个途径可以用来对ka求解以使式1-2中E最小。最简单的方法是利用MATLAB来解这个联立线性方程组。假设NP,这个线性预测问题可以转换成式1-3的矩阵形式。][]2[]1[][]2[]1[]1[][]1[]2[][]1[11NxpxpxNepepeaaNxpNxpxxpxx(1-3)式1-3还可以紧凑一些写成-Xa+e=x。这个方程用来对向量a求解,以使总平方预测误差e’*e最小。式1-3左边放一半减号是为了让“预测误差滤波器”能表示成e=Xa+x。2.利用matlab实现股票预测的编程思想利用matlab实现股票线性预测的编程流程图如图1所示。图1股票预测流程图首先根据信源X[n]构造矩阵X,求出滤波器的系数ka,得到第一个预测值,后重新构造矩阵X1,然后根据X1在循环回重新构造下一个矩阵X,x。得到最终的预测值。若已知信源x[n],求解系数ka,则可根据上述流程求出x[n+1],x[n+2]等一系列预测值。3.计算机仿真股票线性预测模型3.1模型简介本模型一共有两个主程序,分别做出主界面“股票线性预测”与预测界面“预测现场”。主界面程序为feimain.m,它调用了预测器界面程序highpan.m在highpan.m中又分别调用了子程序xtxs.m来求解滤波器系数ak,子程序hqy_wav.m来求解预测值,子程序gett.m载入数据和四个信源,即开盘价Open.m、收盘价Close21.m、最高价High.m与最低价Low.m。3.2使用简介当执行feimain.m时,将出现一个主界面如图2所示。根据信源x[n]构造矩阵X,x得到预测值求解滤波器系数ka得到第一个预测值重新构造矩阵X1图2股票预测主界面点击“欢迎进入股市预测”按钮就可调出预测器界面,如图3所示。图3预测器界面点击“指导老师”或者“设计人员”菜单项都可弹出相应的姓名。如图4所示。图44主要编辑程序4.1主界面程序%主界面程序clc;nandy1=[0.50.50.5];nandy=[111];nandy2=[0.70.70.7];%设定图形界面h_mm=figure('name','股票预测界面',...'units','normalized','position',[0.20.20.50.3],...'menubar','none','numbertitle','off','Color',nandy);%设定图形句柄的各项属性set(h_mm,'defaultuicontrolfontsize',13);set(h_mm,'defaultuicontrolbackgroundcolor',nandy2);set(h_mm,'defaultuicontrolunits','normalized');set(h_mm,'defaultuicontrolfontunits','pixels');set(h_mm,'defaultuicontrolfontname','隶书');h_text=uicontrol(h_mm,'style','text','string','Welcometoyou!','position',...[0.290.40.450.4],'backgroundcolor','w','fontsize',24);h_push=uicontrol(h_mm,'style','push','string','欢迎进入股票预测','position',...[0.310.30.40.18],'backgroundcolor',...[0.70.70.7],'fore','k','fontsize',18,'call','close,highpan');运行主程序后如图5点击“欢迎进入股票预测”按钮就可调用预测器主程序运行结果。图54.2预测器主程序nandy1=[0.60.60.6];nandy=[111];nandy2=[0.70.70.7];N1=10;N=10;hyh=1;%设置图形界面h_mm=figure('name','预测现场',...'units','normalized','position',[0.150.10.850.45],...'menubar','none','numbertitle','off','color',nandy);%设置图形句柄的各项属性set(h_mm,'defaultuicontrolfontsize',13);set(h_mm,'defaultuicontrolbackgroundcolor',nandy2);set(h_mm,'defaultuicontrolunits','normalized');set(h_mm,'defaultuicontrolfontunits','pixels');set(h_mm,’defaultuicontrolfontname','隶书');%设置轴对象h_axes1=axes('position',[0.090.40.40.5],'visible','on');gridon;h_axes2=axes('position',[0.580.40.40.5],'visible','on');gridon;%设定菜单h_menu1=uimenu(h_mm,'Label','指导老师¦');h_menu2=uimenu(h_mm,'Label','设计人员');zmenu=uimenu(h_menu1,'Label','');h_menu3=uimenu(h_menu2,'Label','徐海东','separator','on');%设定空间区域框h_framel=uicontrol(h_mm,'style','frame','position',...[0.060.030.90.23],'backgroundcolor',nandy1);%设定文本框h_editl=uicontrol(h_mm,'style','edit','position',[0.380.070.150.08],...'back','w','string','10','call',['N1=gett(h_editl,1);',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh)']);h_edit2=uicontrol(h_mm,'style','edit','position',[0.60.070.150.08],...'back','w','string','10','call',['N1=gett(h_edit2,1);',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh)']);Ijp=('N1=get(h_editl,value)');%设定各种静态文本框h_text1=uicontrol(h_mm,'style','text','position',[0.080.170.180.07],'string',...'预测类型','backgroundcolor',nandy1,'fore','w');h_text2=uicontrol(h_mm,'style','text','position',[0.350.170.180.07],'string',...'预测阶数','backgroundcolor',nandy1,'fore','w');h_text3=uicontrol(h_mm,'style','text','position',[0.580.170.180.07],'string',...'预测周数','backgroundcolor',nandy1,'fore','w');h_push=uicontrol(h_mm,'style','push','position',[0.80.070.10.1],'string',...'¹关闭',’call’,’close’,'backgroundcolor',nandy1,'fore','w');%设定弹出框h_popupl=uicontrol(h_mm,'style','popup','string',...'最高价预测|最低价预测|开盘预测收盘预测',...'position',[0.080.130.210.03],'back','w','call',['num=gett(h_popupl,2);',...'ifnum==1,hyh=1;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'ifnum==2,hyh=2;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'ifnum==3,hyh=3;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,',...'ifnum==4,hyh=4;',...'hqy_wav(h_axes1,h_axes2,N1,N,hyh);end,']);hqy_wav(h_axes1,h_axes2,N1,N,hyh);主程序调用出预测界面(如图6)。图6然后继续调用预测程序,求解系数子程序和数据载入程序,程序如下。4.3预测程序functionhqy_wav(h_axes1,h_axes2,N1,N,mm)ifmm==1x=High;elseifmm==2x=Low;elseifmm==3x=Open;elseifmm==4x=Close21;endaxes(h_axes1);cla;plot(x);gridon;title('原价图');xlabel('周数(Weeks)');ylabel('道·琼斯工业指数');axes(h_axes2);cla;fork=1:N;n=length(x);q=xtxs(x,N1);m=0;X=zeros(n-N1,N1);fori=1:n-N1;forj=1:N1;X(i,j)=x(j+m);endm=m+1;endi=n-N1+1;forj=1:N1-1;X(i,j)=x(m+j);endX(i,N1)=x(m+N1);yy=-X*q;w=yy(n-N1+1,1);x(1,n+1)=w;endp
本文标题:基于MATLAB股票市场的线性预测
链接地址:https://www.777doc.com/doc-2570771 .html