打印

神经网络预测股票价格走势

[复制链接]
1868|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

简单的说来,就是通过训练网络,调节各个神经元传输的权重,来模拟系统的输入与输出。
优点:可以模拟非常复杂的模型。

缺点:实际上这个模型还是经验模型,显然训练的历史数据越多,网络的“经验就越丰富”,对于一些突发事件显然没有应对能力。。

% 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法
%(trainlm)和贝叶斯正则化算法(trainbr),
% 用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下
% MATLAB 语句生成:   
% MATLAB 程序如下:  
close all  
clear all  
clc  
% NEWFF——生成一个新的前向神经网络  
% TRAIN——对 BP 神经网络进行训练
% SIM——对 BP 神经网络进行仿真   
%  定义训练样本矢量  
% P 为输入矢量  
stock=[002225];  %股票代码
[a b c d e f]=kline(stock,360);  %取得股票日K线数据
aa=[a ;b; c ;d; e ;f ];  %搞成矩阵
aa(6,:)=aa(2,:)-aa(3,:);  %开收盘价差
aa(7,:)=aa(4,:)-aa(1,:);  %最高最低盘价差

while (1)   %很恶心的代码,取出没开盘的时间数据
   a=size(aa);
   bexit=0;
   for n=1:a(2)
       if aa(7,n)==0
           aa(:,n)=[];
           bexit = 1;
           break;
       end      
   end
   if bexit==0
        break;   
   end
end

a=size(aa);   
bb=aa;
bb(:,1)=[];
cc=aa;
cc(:,a(2))=[];
bb=bb-cc;   %计算前后2天的差分数据,添加进训练数据。我们关系预测价差嘛

aa(8:14,2:a(2)) = bb;%计算前后2天的差分数据,添加进训练数据。我们关系预测价差嘛

%aa = aa';  
aa(:,1)=[];  既然是差分数据,第一天的数据不要了。

%  创建一个新的前向神经网络  
net=newff(minmax(aa),[12,5],{'tansig','purelin'});  
disp('1.  L-M 优化算法 TRAINLM'); disp('2.  贝叶斯正则化算法 TRAINBR');  
choice=input('请选择训练算法(1,2):');  
if(choice==1)
    %  采用 L-M 优化算法 TRAINLM  
    net.trainFcn='trainlm';                 
    %  设置训练参数         
    net.trainParam.epochs = 500;         
    net.trainParam.goal = 1e-6;         
    %  重新初始化
    net=init(net);         
%    pause;
elseif(choice==2)
    %  采用贝叶斯正则化算法 TRAINBR         
    net.trainFcn='trainbr';                  
    %  设置训练参数         
    net.trainParam.epochs = 1000;
    net.trainParam.goal=0.001;
%  重新初始化   
    net = init(net);            
%   pause;
end
% 调用相应算法训练 BP 网络
a=size(aa);
[Pn,minP,maxP,Tn,minT,maxT]=premnmx(aa(:,1:a(2)),aa(1:5,1:a(2)));%归一化处理
[net,tr]=train(net,Pn(:,1:a(2)-1),Tn(:,2:a(2)));
%[net,tr]=train(net,aa(:,1:a(2)-1),aa(1:5,2:a(2)));
%[net,tr]=train(net,aa,T);
% 对 BP 网络进行仿真
%yn = sim(net,aa(:,1:a(2)-1));
yn=sim(net,Pn);  %仿真 ,+ 同是把昨天数据加入仿真数据,看一下预测数据。

%E =  yn - aa(1:5,2:a(2));  %%%看看误差
%MSE=mse(E) ;

y=postmnmx(yn,minT,maxT);  %反归一化

figure   %%把图画出来
subplot(2,1,1);
plot(aa(4,1:a(2)));
subplot(2,1,2);
plot(y(4,:));

相关帖子

沙发
gaoyang9992006|  楼主 | 2017-8-31 11:47 | 只看该作者

这是仿真+预测数据。。
copy right by lwglucky
乖乖,预测出来明天要跌啊。!!

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2017-8-31 11:48 | 只看该作者
哈哈,仅供娱乐,这东西因素多,不如去电工炒股俱乐部版块跟我交流技术。

使用特权

评论回复
地板
keyu886| | 2017-9-14 11:25 | 只看该作者
楼主厉害啊

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2017-9-18 21:17 | 只看该作者

haha,仅仅娱乐,不要信这套,股市米有定式。

使用特权

评论回复
6
yuchl| | 2018-1-15 14:15 | 只看该作者
楼主厉害了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1971

主题

15979

帖子

210

粉丝