一种基于马尔科夫的股价走势预测方法和系统技术领域
本发明涉及一种基于马尔科夫的股价走势预测方法和系统,属于计算机应用技术
领域。
背景技术
根据历史股票对未来股价发展方向以及涨跌程度的预测称为是股价走势预测。随
着国内证券分析技术和软件技术的不断提升,如今的股票软件更加的实用化、功能化,从动
态行情分析,实时新闻资讯,智能选股,委托交易等方面做了更深的研究,使得广大的股民
在基本面分析、技术面分析,新闻资讯汇集、个性选股、自动选股、自动委托交易,止赢止损
等方面获得更快更全更好的服务,争取最大程度的赢利。
而股票软件的实质是通过对市场信息数据的统计,按照一定的分析模型来给出数
(报表)、形(指标图形)、文(资讯链接),用户则依照一定的分析理论,来对这些结论进行解
释。但是,对于一些新手来说,这类软件呈现的信息较多,较为复杂,不方便分析。因此需要
一种简单快捷的软件,方便使用并能提供股票涨跌幅概率预测。在多种预测方法中马尔科
夫预测是一个对新手来说比较好的预测方法,对过程的状态预测效果良好,马尔科夫预测
原理具有平稳性的特性,这一特性能有效地保证预测结果的准确性,适合用于与本发明类
似的以数据为主的股票预测。本发明能满足上述需求并能解决上述问题。
发明内容
本发明目的在于解决上述现有技术的不足,提供了一种股价走势预测方法,该方
法根据sin拟合算法,对离散数据进行拟合,利用拟合出的函数的极值点和极值对数据进行
分类,在计算出各类之间的转移概率之后,利用马尔科夫预测原理进行预测,解决了股价走
势预测准确度不高的问题。
本发明解决其技术问题所采取的技术方案是:本发明在股价走势预测方法上,采
用先拟合,再分类,后预测的设计思想,先将多个离散的股价进行拟合,再根据拟合出的函
数极值点进行数据的划分,通过计算相邻极值点和对应极值差对该结果进行分类,计算出
各个类之间的转移概率,最后利用马尔科夫预测原理进行预测,提高了股价走势预测的准
确度。
方法流程:
本发明提供了一种基于马尔科夫的股价走势预测方法,该方法在通过拟合某一支
股票所有的股价之后,根据极值点进行划分,再通过计算相邻极值点的差和对应的极值差,
对该结果进行分类,最后根据马尔可夫链进行预测,具体包括以下步骤:
步骤1:建立数据库用于存储所有股票的数据,在数据库中为每一支股票建立一张
表,存储该支股票信息,包括日期、收盘价、涨跌幅、前手价、开盘价、最高价、最低价、成交量
(单位:手)和成交额(单位:千元);
步骤2:通过HTML技术从网上获取股票信息并存入数据库;
步骤3:对于任一股票,从数据库获取该股票的收盘价存入数组stock,利用sin函
数对数据进行拟合;
步骤4:根据拟合得到的函数的极值点对数据进行分类;
步骤5:通过马尔科夫预测原理进行股价走势预测。
进一步的,本发明所述的步骤2中,通过HTML技术从网络获取股票信息,最后用SQL
语句将股票信息存入数据库。
进一步的,本发明所述的步骤3中对数据的拟合具体包括以下步骤:
步骤3-1:数据预处理;
将stock作为因变量,i+1作为自变量。先通过循环,找出stock数组的最大值
(max),最小值(min),再将获取的收盘价做归一化处理,存入数组nstock。
归一化公式如下:
步骤3-2:拟合股价的离散数据;
利用sin函数对离散数据做拟合,通过确定sin函数的系数将离散数据连续化。
基于sin函数公式对nstock中数据进行拟合,得到股票收盘价的函数公式:
x作为自变量,表示第x天,y作为因变量,表示收盘价,例如x=1,即表示第一天的
收盘价为y,ai、bi、ci为函数表达式的系数。
进一步的,本发明所述的步骤4中对数据的分类具体包括以下步骤:
步骤4-1:将拟合出的曲线分为多个阶段;
计算曲线的极值点,将极值点存入extx数组,极值点将曲线分为若干段,利用极值
点计算极值。
极值的计算:根据在第二步中求出的sin函数表达式,将计算的极值点代入得到极
值,将极值存入extv数组。
步骤4-2:确定曲线上每个阶段的类别;
将曲线的走势分为五种类别——上升、下降、微升、微降、持平。计算相邻两个极值
点对应直线的斜率存入extc数组,将extc数组中的每个元素与设定的五种类别的阈值比
较,确定各阶段的类别。斜率的计算公式如下:
extv[i+1]和extv[i]分别表示相邻两个极值点对应的函数值,extx[i+1]和extx
[i]分别表示相邻两个极值点的值,extc[i]表示相邻两个极值点确定的直线的斜率。
本发明各个类别的阈值包括:
上升:0.05~0.1
下降:-0.1~-0.05
微升:0.001~0.05
微降:-0.05~0.001
持平:-0.001~0.001
进一步的,本发明所述的步骤5中,股票走势预测具体包括以下步骤:
步骤5-1:确定上升、下降、持平、微升、微降两两之间的转移概率;
在股价分类步骤中已确定了每个阶段的类别,利用所有阶段的类别来得到类别和
类别之间的转移概率,以上升到下降为例,其转移概率计算公式如下:
times上升~下降表示上升到下降的转移次数,tm上升表示上升出现的总次数,tp上升~下降表
示上升到下降的转移概率。
利用该计算方法计算所有类别的转移概率。可得到一个5*5的转移矩阵
每行和每列分别依次表示上升、下降、微升、微降、持平。
将转移矩阵中的数据存入ts数组中。
步骤5-2:利用转移概率通过马尔科夫预测原理做股票预测;
马尔科夫预测原理:在转移矩阵中存储了两两类别之间的转移概率,通过第三步
确定当前状态。在转移矩阵中找到该状态所对应的行,找出该行中最大的转移概率,即可得
到下一阶段最大可能的类别。
本发明还提供了一种基于马尔科夫的股价走势预测的股票信息系统,该系统包含
显示股票信息模块、股票预测模块、更新历史数据模块和更新股票代码模块;
显示股票信息模块分为显示单只股票所有历史数据的功能和显示所有股票最新
数据的功能;使用显示单只股票的所有历史数据的功能时,用户可以通过在界面信息输入
区域输入股票代码或股票名称,进行对单只股票代码的所有数据的查询;查询结果会以表
格的形式进行显示;显示所有股票的最新数据时,用户只要点击相应的按钮即可,结果也是
以表格的形式呈现;
更新历史数据模块通过用户点击“获取历史数据”按钮来使用,系统会在后台进行
历史数据的抓取,抓取完成后,会有提示对话框;
股票预测模块通过用户点击界面上的“股票预测”按钮来使用,系统会根据预测方
法对该只股票的涨跌幅进行预测,本系统将股票的涨跌情况分为五类,分别是大涨,小涨,
持平,小跌和大跌,股票预测功能会对这五种情况发生的概率进行预测,并在界面上显示各
个状态发生的概率;
更新股票代码模块通过用户点击界面上的“更新股票代码”来实现;用户使用该功
能后,系统会根据网上的现有股票来更新系统内已有的股票,这样在有新入市的股票时,用
户也会及时知晓。
有益效果:
1、本发明提出了关于股价走势预测的方法,该方法先将离散股价进行拟合,利用
拟合出的函数的极值点将所有的收盘价划分为若干阶段;再根据相邻的极值点和对应极值
的差进行分类,这样可以更好地将在一段时间内走势相近的收盘价归为一类,对后期走势
预测的精度也有一定程度的提高;接着根据分类结果计算转移概率矩阵,最后利用马尔科
夫预测原理进行预测,这样可以提高预测的准确性,并且使预测准确性保持在稳定的范围
内。
2、本发明综合考虑系统运行时间,股价走势预测准确度等方面,利用sin拟合算
法,对单支股票的所有收盘价进行拟合,再根据拟合出的函数的极值点对所有收盘价进行
划分,接着根据极值点的差以及对应极值的差将股价走势分为五类,在计算出各类之间的
转移概率之后,利用马尔科夫预测原理进行预测。该方法尽可能减小了系统运行时间,提高
了股价预测的准确度。
3、本发明的数据均从网上获取,应用简单,数据完整,获取数据较易,方便使用,占
用空间较小,对数据的分类较为精准。
附图说明
图1为本发明的方法流程图。
图2为本发明系统的架构图。
具体实施方式
下面结合说明书附图对本发明创造作进一步的详细说明。
本发明涉及到的相关标记包括:
stock:存放股价的数组;
nstock:存放预处理之后股价的数组;
n:stock数组的长度;
extx:存放极值点的数组;
extv:存放极值的数组;
extc:存放相邻两个极值点对应的直线斜率的数组;
i:stock、nstock、extx、extv、extc数组的下标,从0开始,每次递增1;
max:stock数组的最大元素;
min:stock数组的最小元素;
tpx~j:x到j的转移概率;
timesx~j:x到j的转移次数;
tmx:x出现的总次数;
ts:5*5的数组,用来存放转移概率;
如图1所示,本发明提供了一种基于马尔科夫的股价走势预测方法,该方法利用
MFC和SQL Server数据库实现了股票收盘价的抓取和预测功能。具体来说本发明的股价走
势预测方法包括以下步骤:
步骤1:建立数据库用于存储所有股票的数据,在数据库中为每一支股票建立一张
表,存储该支股票信息,包括日期、收盘价、涨跌幅、前手价、开盘价、最高价、最低价、成交量
(单位:手)和成交额(单位:千元);
步骤2:通过HTML技术从网上获取股票信息并存入数据库;
步骤3:对于任一股票,从数据库获取该股票的收盘价存入数组stock,利用sin函
数对数据进行拟合;其中对数据进行拟合包括以下步骤:
步骤3-1:数据预处理;
将stock作为因变量,i+1作为自变量。先通过循环,找出stock数组的最大值
(max),最小值(min),再将获取的收盘价做归一化处理,存入数组nstock。
归一化公式如下:
步骤3-2:拟合股价的离散数据;
利用sin函数对离散数据做拟合,通过确定sin函数的系数将离散数据连续化。
基于sin函数公式对nstock中数据进行拟合,得到股票收盘价的函数公式:
x作为自变量,表示第x天,y作为因变量,表示收盘价,例如x=1,即表示第一天的
收盘价为y,ai、bi、ci为函数表达式的系数。
步骤4:根据拟合得到的函数的极值点对数据进行分类;其中对数据进行分类包括
以下步骤:
步骤4-1:将拟合出的曲线分为多个阶段;
计算曲线的极值点,将极值点存入extx数组,极值点将曲线分为若干段,利用极值
点计算极值。
极值的计算:根据在第二步中求出的sin函数表达式,将计算的极值点代入得到极
值,将极值存入extv数组。
步骤4-2:确定曲线上每个阶段的类别;
将曲线的走势分为五种类别——上升、下降、微升、微降、持平。计算相邻两个极值
点对应直线的斜率存入extc数组,将extc数组中的每个元素与设定的五种类别的阈值比
较,确定该阶段的类别。斜率的计算公式如下:
extv[i+1]和extv[i]分别表示相邻两个极值点对应的函数值,extx[i+1]和extx
[i]分别表示相邻两个极值点的值,extc[i]表示相邻两个极值点确定的直线的斜率。
本发明的各个类别的阈值包括:
上升:0.05~0.1
下降:-0.1~-0.05
微升:0.001~0.05
微降:-0.05~0.001
持平:-0.001~0.001
步骤5:通过马尔科夫预测原理进行股价走势预测,其中股票走势预测主要包括以
下步骤:
步骤5-1:确定上升、下降、持平、微升、微降两两之间的转移概率;
在股价分类步骤中已确定了每个阶段的类别,利用所有阶段的类别来得到类别和
类别之间的转移概率,以上升到下降的转移概率为例,如下式;
times上升~下降表示上升到下降的转移次数,tm上升表示上升出现的总次数,tp上升~下降表
示上升到下降的转移概率。
利用该计算方法计算所有的转移概率。可得到一个5*5的转移矩阵
每行和每列分别依次表示上升、下降、微升、微降、持平。
本发明将转移矩阵中的数据存入ts数组中。
步骤5-2:利用转移概率通过马尔科夫预测原理做股票预测;
马尔科夫预测原理:在转移矩阵中存储了两两类别之间的转移概率,通过第三步
确定当前阶段的状态。在转移矩阵中找到该状态所对应的行,找出该行中最大的转移概率,
即可得到下一阶段最大可能的类别。
如图2所示,本发明提供了一种基于马尔科夫的股价走势预测的股票信息系统,该
系统包括显示股票信息模块、股票预测模块,更新历史数据模块和更新股票代码模块。
显示股票信息模块的功能分为显示单只股票所有历史数据的功能和显示所有股
票最新数据的功能。使用显示单只股票的所有历史数据的功能时,用户可以通过在界面信
息输入区域输入股票代码或股票名称,进行对单只股票代码的所有数据的查询。查询结果
会以表格的形式进行显示。显示所有股票的最新数据时,用户只要点击相应的按钮即可,结
果也是以表格的形式呈现。
更新历史数据模块的功能通过用户点击“获取历史数据”按钮来使用,系统会在后
台进行历史数据的抓取,抓取完成后,会有提示对话框。
股票预测模块的功能通过用户点击界面上的“股票预测”按钮来使用,系统会根据
预测方法对该只股票的涨跌幅进行预测,本系统将股票的涨跌情况分为五类,分别是大涨,
小涨,持平,小跌和大跌,股票预测功能会对这五种情况发生的概率进行预测,并在界面上
显示各个状态发生的概率。
更新股票代码模块的功能通过用户点击界面上的“更新股票代码”来实现。用户使
用该功能后,系统会根据网上的现有股票来更新系统内已有的股票,这样在有新入市的股
票时,用户也会及时知晓。
本发明系统包括以下几部分:在数据库中为每一支股票建立一张表,存储该支股
票信息,从网上获取股票数据并存入数据库;从数据库获取每支股票的收盘价存入数组,利
用sin函数对数据进行拟合;根据拟合得到的函数的极值点对数据进行分类;通过马尔科夫
预测原理进行股价走势预测。本发明的数据均从网上获取,应用简单,数据完整,获取数据
较易,方便使用,占用空间较小,对数据的分类较为精准,由于利用马尔科夫预测原理进行
预测,预测结果较为准确,可以起到一定的指导作用。