可以同时预测3支股票
(1)根据评价指标集, 确定BP 网络中输入节点的个数, 即为指标个数
(2)确定BP 网络的层数, 一般段茄采用具有一个输入层, 一个隐含层和一个输出层的三层网络模型结构明确评价结果, 输出层的节点数为1
(3)对指标值进行标准化处握薯察理, 然后作为训练样本和检验样本
(4)网络状态初始化, 对连接权值wij 和阈值θj赋予( 0, 1)之间的随机数
(5)输入样本, 从前往后计算各层神经元输出yj
(6)对输出层计算权值误差E
(7)从后往前计算各隐层的权值误差δ'j =f '(netj)·l !δlvlj
(8)计算并保存各权值修正4量Δwij(n)=- ηδjxi+αΔwij(n- 1)
(9)修正权值wij(n+1)=wij(n)+Δwij(n)
(10)输入另外一样本, 转到步骤⑤ , 直到网络收敛且输出误差小于允许值。
二、具体原理应用
(1) 网络层数和ANN 输入结点的确定
通常,我们取三层网络模型。输入层起缓冲存储器的作用,它接受外部的输入数据, 因此节点数取决于输入矢量的维数。股价走势呈波浪形式展开, 具有周期性。技术分析中, 分析周期的选择是否恰当, 对预测结果有直接影响。由于时间、任务量及便于选择等原因, 这里选择为1日, 即date=1。
(2) 数据的预处理
数据预处理是将从股市得到的数据转化为能被ANN 识别的输入数据。设ANN 从n日开始预测股价涨跌, 股票最近已成交的原始数据序列{x' (t)},{x(t)}为处理后输入ANN 的数据序列, 作如下处理
x' =date- 1i = 0 !x' (n- 1)date, x(t)= x' (t)- x'x'+0.5。
(3)隐层的节点数
一般认为, 隐层节点数与求解问题的要求\ 输入输出单元数多少都有直接的关系。对于BP 网络, 参照前人经验, 可以参照以下公式进行设计:n="ni +n0 +a。
式中n 为隐层节点数ni 为输入节点数n0 为输出节点数手盯a 为1- 10 之间的常数。
(4) 输出结点定义
人工神经网络输出结点数为1, 取股价变化趋势的阈值a=0 选的一段时间涨跌的平均值预测步长k=1。输出结点Y(t)
定义如下: Y(t)=0 时, 预测股价在t+1 开始的单日涨幅或跌幅不超过a, 即预计处于下跌趋势Y(t)=1 时预计股价在t+1 开始的单日内处于上涨趋势, 上升幅度累计超过a。
(5) 网络的其它参数确定
隐层结点数为6, 结点作用函数为S 函数, 即f(s)= 11+e- s学习系数为0.7。学习时要求输出误差d≤0.1。预测时输出层的输出大于0.5 判为1小于或等于0.5 判为0。
三、程序解析
1、进入窗口程序窗口看
(1)“点击进入”按钮
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObjecthandle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handlesstructure with handles and user data (see GUIDATA)
yucexianchang
set(gupiaoyuce,'Visible','off')
(2)“退出”按钮
% --- Executes on button press in exit_pushbutton.
function exit_pushbutton_Callback(hObject, eventdata, handles)
% hObjecthandle to exit_pushbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handlesstructure with handles and user data (see GUIDATA)
Close
2、股票预测窗口
模拟功能:
模拟
绘图
(1)“模拟”按钮CallBack函数
% --- Executes on button press in moni_pushbutton.
function moni_pushbutton_Callback(hObject, eventdata, handles)
% hObject handle to moni_pushbutton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global PD ED PW EW%全局变量
danwei=get(handles.danwei_popupmenu,'Value')
xiangmu=get(handles.xiangmu_popupmenu,'Value')
danweishu=str2num(get(handles.danweishu_edit,'String'))
jingdu=str2num(get(handles.jingdu_edit,'String'))
[PD,ED]=yuce_day(danweishu,jingdu)%调用yuce_day.m函数进行预测
[PW,EW]=yuce_week(danweishu,jingdu)%调用yuce_week.m函数进行预测
(2)股票预测核心函数(yuce_day.m)
预测股票价格没有意义。单支股票价格,多股组合,大盘这些都可以使用神经网络来学习,02年就做过了,涨跌预测平均能达到54%到57%的准确率,但是只能定性,无法定量,因此,在扣除印花税之后无利可图。
纯粹使用股晌薯票交易数据来预测并保证总体获利不是程序能办到的,人也办不到。
目前世界雹谨基上最先进的炒股机器也只能利用网络时差那微不可计的零点几秒在欧洲与美国证券间倒来倒去,那套系统研发费用数千万,硬件(主源谨要是独立光缆)费用以亿计。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)