农业银行日开盘价成交量对收盘价的预测图2.82.752.72.65股价/元 原始数据拟合数据预测数据2.62.552.52.452.4 050100150时间/天200250300
可以看出拟合结果很好,预测结果整体较好,没有出现个别点误差很大的情况。
4.3 多日收盘价,成交量对单日收盘价预测
十个输入,一个输出,三个隐层神经元(通过实验比较得到),隐层激活函数为tansig函数,输出层激活函数为线性激活函数purelin。
26
农业银行五日开盘价成交量对收盘价的预测图2.82.752.72.65股价/元 原始数据拟合数据预测数据2.62.552.52.452.4 050100150时间/天200250300
上图可以看出,拟合结果较好,但是预测结果一般,没有前两种情况精确,原因可能是样本规模较小,而输入维数较高,这样对每个输入变量相对输出的刻画会变得不精确。但是如果样本数据足够大的话,这种模型要比前面两种更好。
4.4 多日收盘价,成交量对多日收盘价预测
十个输入,三个输出,三个隐层神经元(通过实验比较得到),隐层激活函数为tansig函数,输出层激活函数为线性激活函数purelin。
此时每日收盘价都有除了前两个样本和最后两个样本都三个数据,我们将这三个数据做一个加权求和,以这个值表示股票的收盘价。
27
农业银行五日开盘价成交量对后三日收盘价的预测图2.82.752.72.65股价/元 原始数据拟合数据预测数据2.62.552.52.452.4 050100150时间/天200250300
从上图可以看出拟合结果比较好,但是预测结果一般,原因是上图你显示了被预测的后一天的股价,该股价是一个加权值,可能由于时间跨度的原因,使得后两天预测结果不太准确,导致该加权值误差比只预测一天的误差要大。但是该方法可以在时间上多预测几天的股价值。
附录(股票数据和程序代码)
部分程序(运行时要调整代码中的某些参数,才能得到以上结果) clc
clear all
%数据导入
x=load('E:\\研究\\神经网络股票预测项目\\SH601288.txt'); I=[x(:,5),x(:,6)]; %单日收盘价对单日收盘价的预测 P0=I(1:(end-1),1); T0=I(2:end,1);
%单日收盘价成交量对单日收盘价预测 P0=I(1:(end-1),:); T0=I(2:end,1);
%五日收盘价成交量对单日收盘价预测
P0=[I(1:(end-5),:),I(2:(end-4),:),I(3:(end-3),:),I(4:(end-2),:),I(5:(end-1),:)]; T0=I(6:end,1);
%五日收盘价成交量对三日收盘价预测
28
P0=[I(1:(end-7),:),I(2:(end-6),:),I(3:(end-5),:),I(4:(end-4),:),I(5:(end-3),:)];
T0=[I(6:(end-2),1),I(7:(end-1),1),I(8:end,1)];
%数据归一化
[P,minP,maxP]=premnmx(P0'); P=P';
[T,minT,maxT]=premnmx(T0'); T=T';
%训练数据测试数据分离 [m,n]=size(P);
p1=P(1:fix(3*m/4),:)'; %前2/3数据训练网络,后1/3数据验证 p2=P((fix(3*m/4)+1):end,:)'; T1=T(1:fix(3*m/4),:)';
T2=T((fix(3*m/4)+1):end,:)'; t1=1:fix(3*m/4); t2=(fix(3*m/4)+1):m; t=1:m;
%建立网络训练网络
net=newff(minmax(p1),[5,1],{'tansig','purelin'},'trainlm');%初始化网络
net.trainparam.show=50; net.trainparam.lr=0.1; net.trainparam.mc=0.9;
net.trainparam.epochs=1000; net.trainparam.goal=0.001; net=train(net,p1,T1); %网络仿真
y=sim(net,[p1,p2]); %反归一化
Y=postmnmx(y,minT,maxT); Y=Y';
%画图
plot(t,T0,t1,Y(1:fix(3*m/4)),'*',t2,Y((fix(3*m/4+1)):m)) legend('原始数据','拟合数据','预测数据') title('农业银行日开盘价对收盘价的预测图') xlabel('时间/天'); ylabel('股价/元') %拟合平均平方根相对误差
(sum((T0(1:fix(3*m/4))-Y(1:fix(3*m/4))).^2))^0.5/fix(3*m/4);
29
%预测平均平方根相对误差
(sum((T0((fix(3*m/4+1)):m)-Y((fix(3*m/4+1)):m)).^2))^0.5/(m-fix(3*m/4));
%加权求和
YY(1)=Y(1,1);
YY(2)=2/3*Y(2,1)+1/3*Y(1,2); for i=3:m
YY(i)=1/2*Y(i,1)+1/3*Y(i-1,2)+1/6*Y(i-2,3); end
YY(m+1)=2/3*Y(m,2)+1/3*Y(m-1,3); YY(m+2)=Y(m,3);
30
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于神经网络的股票价格走势预测及其MATLAB实现——论文(6)在线全文阅读。
相关推荐: