掌桥专利:专业的专利平台
掌桥专利
首页

一种基于图形识别与量化指标的股票交易推荐系统及方法

文献发布时间:2024-04-18 19:58:53


一种基于图形识别与量化指标的股票交易推荐系统及方法

技术领域

本发明属于计算机图形和量化技术领域,具体涉及基于图形识别与量化指标的股票交易推荐系统及方法。

背景技术

随着世界经济不断发展,各国产业结构不断调整,金融业逐渐提升份额,形成了金融行业在国民经济占主要份额的局面。

量化选股是将选股标准进行量化,从而选择确定的投资组合,通常认为,所确定的投资组合可以获得超越大盘的投资收益。常见的量化选股方法,有量化因子选股,行业选股,趋势选股等。进一步来说,量化的过程,实际上是利用计算机并构建数学模型来进行选股投资,这是一种以模型为核心,以程序化交易为手段的选股方法。

近些年国内量化交易已经非常普遍,然而在传统的投资模式下,个人投资者常常缺乏量化的工具,个人能力有限导致亏损严重成为常态。一方面,新手个人投资者缺乏经验,需要大量时间和大笔开销积累投资经验;另一方面,资深个人投资者积累了大量的投资经验,但是面对5000多只股票的庞大数量,以及每只股票复杂的特征,很难在开市的短短几个小时内全部梳理一遍,且人工筛选也存在遗漏等失误,所以,对个人投资者的股票交易推荐方法当下变得非常重要。

基于上述原因,需要一个面向个人投资者、适用于A股市场的股票交易推荐系统和方法,该系统需要通过自动化执行股票筛选策略,来达成以下目标:减少个人投资者的人力消耗;提高股票的筛选效率;减少筛选指标的遗漏;提高筛选结果的准确度。系统应具备以下特性:充分满足需求,高度还原资深投资者的选股策略;具有易用性,未经过培训的用户可以轻松使用本系统;具有良好的交互性,可以让用户在使用时有良好的用户体验;具有时效性,及时反馈用户市场行情;具有可评估性,能够根据历史数据进行收益回测。但目前尚无能够满足以上需求的合适技术方案。

发明内容

为解决上述问题,本发明公开了一种基于图形识别和量化指标的股票交易推荐系统及方法,面向个人投资者提供A股的买入、卖出和加仓建议。本发明主要实现以下需求:根据服务器绘制的k线图,为CNN模型提供测试集,模型需要选出预期的走势图;需要获取股票数据并计算量化指标,基于这些指标进行买入、卖出与加仓的筛选;UI界面的筛选结果需要能够通过右键菜单查看k线图并进行买入或卖出,同时,k线图需要能够动态拖动大小,显示不同日期区间,显示所需的部分信息,如30均线等;需要能够自定义每轮筛选的输入,自定义购入股票的日期等信息;需要能够在本机进行筛选或在服务器上进行筛选并在客户端获取筛选结果;需要能够进行回测,来验证本系统的收益率。本系统采用了MVC的设计思想,通过PyQt5实现了前端的视图层,来负责用户交互和任务下发,控制层负责接收视图层的任务,并执行业务逻辑,将数据存储在数据持久层,并反馈结果给视图层,数据持久层用MySQL来存储筛选的结果、用户持仓、买卖数据等信息。

为达到上述目的,本发明的技术方案如下:

一种基于图形识别和量化指标的股票交易推荐系统,包括:图形筛选模块、指标筛选模块、策略回测模块和交易管理功能模块;

所述图形筛选模块用于生成k线图并进行处理和渲染,实现单张k线图查看、模型测试集生成、k线图筛选;当进行单张k线图查看时能够拖动来调整不同时间间隔或调整k线图大小;生成模型测试集时对数据集进行预处理,用于进行k线图筛选;进行k线图筛选时手工构建训练集,训练CNN模型,并使用训练好的模型来筛选图形;

所述指标筛选模块用于实现买入日k指标的筛选、买入实时指标的筛选、卖出的筛选和加仓的筛选;从爬虫和量化指标接口获取数据,对数据进行处理和分析,并使用相应的算法和模型来进行指标筛选;买入日k指标的筛选每日定时执行一次,其他三个功能在开盘后定时执行;筛选结果存储在数据库中,并使用数据库查询语言来检索和更新数据;

所述策略回测模块用于计算历史交易和用户持仓的股票收益率;历史回测根据用户交易记录的股票代码和相应日期,从股市数据接口获取相关数据并进行分析,并计算历史交易的收益率;持仓回测根据用户持仓的股票代码和股市数据接口,来计算持仓的收益率;

所述交易管理模块用于记录用户的交易行为,包括买入和卖出记录。

进一步的,所述图形筛选模块通过4个接口实现,分别是单张k线图绘制接口、CNN模型数据集绘制接口、CNN模型构建接口、图形筛选接口;所述4个接口由图形筛选模块控制类统一管理,具体管理方法如下:

(1)图形筛选模块控制类管理CNN模型数据集的生成,包括训练集、验证集、测试集的生成;

(2)图形筛选模块控制类管理CNN模型的构建,模型包含两个卷积层C1、C2,三个Relu非线性层,一个池化层P,两个线性层L1、L2;卷积层用于提取图像特征;Relu非线性层在卷积层之后用于激活神经元,使得神经元的输出非线性化;池化层P用于缩小特征图的尺寸,减少参数数量;两个线性层中的一个用于调节尺寸,另一个用于最后的分类;

(3)图形筛选模块控制类管理单张k线图的绘制,绘制的k线图标注了推荐交易的买卖点,并支持拖动控制日期区间;

(4)图形筛选模块控制类管理股票图形的筛选,需要筛选v形反转、w底、头肩底、塔形反转四类图形。

进一步的,指标筛选模块通过4个接口实现,分别是买入第一轮筛选接口、买入第二轮筛选接口、卖出筛选接口、加仓筛选接口;4个接口由指标筛选模块控制类统一管理,具体管理方法如下:

(1)指标筛选模块控制类管理买入第一轮筛选,本轮筛选基于日k数据进行筛选,部分数据通过Tushare和easyquotation获取,而其他数据将通过爬虫获取;

(2)指标筛选模块控制类管理买入第二轮筛选,本轮筛选依据一系列实时指标来进行筛选;实时数据通过requests或requests_html爬虫获取;

(3)指标筛选模块控制类管理卖出筛选,本轮筛选基于日k指标和实时指标进行筛选,日k数据通过Tushare、easyquotation、爬虫获取,实时数据通过爬虫获取;卖出筛选需要一年内的日k数据和实时数据计算出所需的指标来进行筛选;

(4)指标筛选模块控制类管理加仓筛选,本轮筛选基于日k指标和实时指标进行筛选,日k数据通过Tushare获取,实时数据通过requests_html爬虫获取;加仓筛选需要两个月内的日k数据和实时数据计算出所需的指标并进行筛选。

进一步的,策略回测模块通过3个接口实现,分别是单股回测接口、历史回测接口、持仓回测接口;所述3个接口由策略回测模块控制类统一管理,具体管理方法如下:

(1)策略回测模块控制类管理单股回测,单股回测基于用户提供的股票代码与日期区间计算收益率与盈亏;

(2)策略回测模块控制类管理历史回测,历史回测基于历史交易信息计算收益率与盈亏;

(3)策略回测模块控制类管理持仓回测,持仓回测基于持仓的股票信息计算收益率与盈亏。

进一步的,交易管理模块通过3个接口实现,分别是持股信息查看接口、记录买入接口、记录卖出接口;所述3个接口由交易管理模块控制类统一管理,具体管理方法如下:

(1)交易管理模块控制类管理持股信息查看,包括股票代码、购入日期和其他信息;

(2)交易管理模块控制类管理记录买入,用户买入时,系统更改持仓,买入信息;

(3)交易管理模块控制类管理记录卖出,用户卖出时,系统更改持仓,卖出信息,并生成历史交易信息。

本发明还提供了基于图形识别与量化指标的股票交易推荐方法,包括:

图形筛选步骤:

当用户单击右键菜单并选择查看k线图时,前端向图形筛选控制类发起请求,随即调用图形筛选服务完成k线图的绘制并返回给用户查看;图形筛选服务在后台刷新当日的所有股票k线图,作为CNN模型的测试集,图形分类方法每日对这些k线图进行筛选用于用户随时查看;

指标筛选步骤:

用户在前端设置筛选指标,点击查询结果时,前端将向服务器发送查询请求;请求被指标筛选控制类处理,并将请求传递给每日筛选服务或分钟筛选服务;这些服务定时使用每日数据服务和实时数据服务提供的数据完成筛选,并将结果存储在数据库中;最终结果在前端界面显示供用户查看;

策略回测步骤:

每日服务器自动进行历史回测和持仓回测,存储回测结果;当用户在前端点击历史回测时,前端会向服务器发送查询请求;服务器收到请求后,调用回测服务的历史回测方法来获取历史回测结果,再将结果返回给前端,供用户查看;当用户在前端点击持仓回测时,前端会向服务器发送请求;服务器收到请求后,调用回测服务的持仓回测方法来获取持仓回测结果,再将结果返回给前端,供用户查看;

交易管理步骤:

用户在前端输入股票代码和买入日期后,前端检查输入,并向服务器发起买入请求,交易控制类调用买入服务在数据库中记录买入操作,检查用户是否重复买入;用户在前端单击卖出时,前端向服务器发起卖出请求,交易控制类调用卖出服务在数据库中记录卖出操作,检查用户是否已持仓。

进一步的,图形筛选步骤中,系统通过CNN模型筛选所需图形并保存到数据库中;用户查看单张k线图和获取图形筛选结果;

其中,单张k线图绘制功能的具体步骤如下:

用户在股票代码上单击右键菜单的查看k线图,系统通过股票数据接口绘制k线图,并进行图像修正、标定买卖点,最后渲染k线图并展示给客户;运行阶段,用户拖动日期范围,查看指定日期范围的k线图,并能够指定显示k线图的部分内容;

图形筛选功能的具体步骤如下:

根据模型,服务器将当日k线图数据集进行分类筛选,服务器将结果存储到数据库,用户单击查询图形筛选结果,系统返回结果给用户。

进一步的,指标筛选步骤中,系统通过实时指标与日k指标筛选买入第一轮、买入第二轮、卖出、加仓的指标筛选结果并保存到数据库中;用户通过前端查看买入第一轮、买入第二轮、卖出、加仓的指标筛选结果;

其中,买入第一轮筛选功能的具体步骤如下:

服务器每日访问数据接口并爬取股票数据,筛选日k指标合格的股票代码并存入数据库,用户查询买入第一轮筛选结果,系统反馈用户买入第一轮筛选的结果;

买入第二轮筛选功能的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,筛选实时指标合格的股票代码更新数据库,用户查询买入第二轮筛选结果,系统反馈用户买入第二轮筛选的结果;

卖出筛选的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,从持仓中筛选指标合格的股票代码更新数据库,用户查询卖出筛选结果,系统反馈用户卖出筛选的结果;

加仓筛选的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,从持仓中筛选指标合格的股票代码更新数据库,用户查询卖出筛选结果,系统反馈用户加仓筛选的结果。

进一步的,策略回测步骤中,系统通过持仓信息和历史交易信息计算持仓回测和历史回测结果并保存到数据库中;用户通过前端查看持仓回测和历史回测结果筛选结果;

其中,持仓回测功能的具体步骤如下:

服务器通过持仓信息每日刷新持仓回测结果到数据库,用户点击持仓回测,系统反馈用户持仓回测结果;

历史回测功能的具体步骤如下:

服务器根据历史交易信息每日刷新历史回测的结果到数据库,用户点击历史回测,系统反馈用户历史回测的结果。

进一步的,交易管理步骤中,用户通过买入和卖出股票更改持仓,买入和卖出时会生成交易记录;用户通过查看持仓了解目前持仓状况;

其中,查看持仓功能的具体步骤如下:

用户点击查看持仓,系统反馈用户的持仓信息;

买入和卖出功能的具体步骤如下:

用户输入股票代码与日期,点击购入或卖出,服务器保存交易记录到数据库中,并反馈用户交易成功;用户通过股票代码右键菜单进行买入,若用户不输入日期,默认日期为当天。

本发明的有益效果为:

1.本发明提供了图形筛选、买入两轮筛选、卖出筛选、加仓筛选指标、交易管理、策略回测等丰富的功能。

2.常规的量化方法和量化软件都采用了具体的量化指标作为量化的输入,而本发明将k线图作为输入,满足了用户将k线图趋势作为筛选条件的需求。

3.本发明针对个人投资者,为在股票市场弱势的个人投资者提供提供了丰富的量化筛选指标,高性价比的量化投资建议,用了合理的量化交易策略,很大程度上填补了面向个人投资者的量化工具的空缺,为个人投资者提高收益发掘了更多可能性。

4.本发明提供了简洁友好的UI界面,具有良好的易用性,本发明的UI界面有较好的交互功能,能展示丰富的股票信息。

5.采用本发明进行股票筛选时,既可以将量化指标考虑的更加周全,降低失误率,更可以节省投资者筛选股票的时间。

附图说明

图1为基于图形识别和量化指标的股票交易推荐系统的物理结构示意图。

图2为基于图形识别和量化指标的股票交易推荐系统的逻辑结构示意图。

图3为基于图形识别和量化指标的股票交易推荐系统的功能模块划分示意图。

图4为CNN模型分类流程图。

图5为基于图形识别和量化指标的股票交易推荐方法业务流程图。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。

本发明以基于图形识别进行股票筛选为创新点,把图形识别作为股票筛选的依据,并辅以量化指标筛选,进行股票筛选。

图1为本发明提供的基于图形识别和量化指标的股票交易推荐系统的物理结构,该结构根据运维角度,基于软件系统的安装部署情况和网络通信的策略,确定了本系统在实际部署时需要明确的一些物理细节。本系统在客户计算机的的UI界面发起请求后,会与服务器建立TCP/IP连接,通过Socket来请求和返回服务器应答,后端服务器会先通过Tushare、easyquotation、requests_html等数据服务获取数据,然后处理买入、卖出、加仓筛选任务,处理后的筛选结果会存储在筛选结果数据库中。最后,交易记录数据库存储了用户的交易信息,策略回测数据库存储了用户的回测信息。

图2所示的为本系统的逻辑结构,本发明为前后端分离的架构,逻辑上需要前端与后端协作运行。本发明前端采用PyQt进行设计开发。前端的用户体验方面,采用Qthread运行后台逻辑,不干扰用户交互。前端的k线图展示方面,在使用Pyecharts绘制html格式的k线图后,k线图通过QtWebengine展示在界面上。服务器处理主要任务,它接收前端的请求后,通过控制器来处理请求,接收不同的请求并返回不同的数据。服务器将通过Schedule定时任务按顺序处理作业,首先,每日需要运行图形筛选任务,将结果存储在数据库中,数据库中的结果将作为输入在买入日k指标筛选任务中运行。同样,日k指标筛选的结果也会先存在数据库中,然后放在买入实时指标筛选任务中运行。加仓筛选和卖出筛选是与买入实时指标筛选任务同时运行,它将数据库中用户的持仓作为输入,筛选持仓股票的指标是否满足卖出与加仓条件,然后记录在数据库中。

图3所示的为该系统的模块划分,具体分为以下四个模块:图形筛选模块负责CNN数据集的准备、单张k线图的查看、CNN模型的构建与使用。指标筛选模块负责买入两轮筛选、卖出筛选、加仓筛选。交易管理模块负责管理持仓信息和交易信息。策略回测模块负责进行持仓回测和历史回测,帮助用户了解策略收益率,进而优化策略。

具体地说,图形筛选模块需要处理单张k线图查看、模型测试集生成、k线图筛选的功能。前两个功能需要生成k线图并进行处理和渲染,单张k线图查看需要能够拖动来调整不同时间间隔或调整k线图大小。对于模型测试集生成,需要对数据集进行预处理,以便进行k线图筛选。对于k线图筛选,需要由人工筛选手工构建训练集,训练CNN(ConvolutionalNeural Networks,卷积神经网络)模型,并使用训练好的模型来筛选图形。数据集图片通过Pyecharts绘制,采用imgkit转换格式,最后由Opencv裁剪并调整分辨率完成图片,随后,通过Pytorch训练CNN模型,调整训练集让验证集达到期望正确率。服务器每天更新5000多只股票的k线图作为测试集,供模型识别。

CNN模型的卷积层函数选用Conv2d,因为本发明主要关注趋势,不关注单日的涨跌,所以输入了灰度图片,相应第一次卷积的输入通道in_channels设为了1,而输出通道out_channels设为了10,卷积核的大小设置为5。第二次卷积的输入通道in_channels设为了10,而输出通道out_channels设为了20,卷积核的大小设置为3,从而进行特征的提取。非线性层函数选用Relu作为激活函数。Relu函数中,在横轴右边时,梯度始终为1,没有梯度耗散问题,收敛速度不仅快还增加了网络的稀疏性。在横轴左边时,该层的输出为0,训练后的神经元越多时,就越稀疏,所提取的特征越有代表性。也就是说,要获得相同的效果,实际工作的神经元越少,网络的泛化性能越好,计算量相对应的也很少。根据这些特征,Relu可以解决梯度耗散问题,因而选择了Relu函数。本模型的线性层函数是Linear,负责调整尺寸和进行分类。池化层采用max_pool2d来调整尺寸,池化层的窗口移动步长设置为2。最后采用log_softmax进行归一化并取对数。

图4所示的为CNN模型分类的流程图,在整个分类流程中,首先输入了300*150的k线图,然后在transforms将图像转为张量前,调整图像尺寸到64*32,随后经过卷积层C1,张量卷积到10*60*28,通过池化层P,张量池化到10*30*14,减少了模型的计算量,同时还可以提取图像的主要特征。再经过第二层卷积层C2后,张量卷积到20*28*12,随后用view将张量重塑到一维,用线性层L1调整尺寸,以便用后续的分类操作。最后线性层L2将模型的输出映射到不同的类别,并对其进行分类,从而得到k线图的分类结果。

系统中图形筛选模块需要实现4个接口,分别是单张k线图绘制接口、CNN模型数据集绘制接口、CNN模型构建接口、图形筛选接口;4个接口由图形筛选模块控制类统一管理,具体管理方法如下:

(1)图形筛选模块控制类管理CNN模型数据集的生成,分别为训练集、验证集、测试集的生成;

(2)图形筛选模块控制类管理CNN模型的构建,在模型中,包含两个卷积层C1、C2,用于提取图像特征;包含三个Relu非线性层,在卷积层之后,Relu非线性层被用来激活神经元,使得神经元的输出非线性化,提高了模型的表达能力;包含一个池化层P,用于缩小特征图的尺寸,减少参数数量,以提高模型的泛化能力;包含两个线性层L1、L2,一个用于调节尺寸,另一个用于最后的分类;

(3)图形筛选模块控制类管理单张k线图的绘制,绘制的k线图标注了推荐交易的买卖点,并支持拖动控制日期区间;

(4)图形筛选模块控制类管理股票图形的筛选,需要筛选v形反转、w底、头肩底、塔形反转四类图形。

指标筛选模块负责处理买入日k指标的筛选、买入实时指标的筛选、卖出的筛选和加仓的筛选。本模块通过MySQL中获取的指标进行买入,卖出和加仓筛选。这些功能需要从爬虫和量化指标接口获取数据,对数据进行处理和分析,并使用相应的算法和模型来进行指标筛选。买入日k指标的筛选每日定时执行一次,其他三个功能仅需在开盘后定时执行。实时指标筛选会在股票开盘后实时更新。筛选结果可以存储在数据库中,并使用数据库查询语言来检索和更新数据。

买入筛选的日k指标筛选,依据以下指标进行:4根以上连阳k线、均线多头排列、成交量温和放大、中度或高度控盘、大资金20日或5日连续流入。4根以上连阳k线是本策略的必要条件,均线多头排列和成交量温和放大在本策略中必须具备其一,中度或高度控盘和大资金20日或5日连续净流入必须具备其一,高位不买,低位优先,ST不买,次新不买。具体的判定规则如下:

(1)在四连阳判定时,七天内有一次四连阳判定为真;

(2)在成交量温和放大判定时,需要找最近的一个四天有三天在跌的时间段,然后找这四天的最后一天作为拐点,拐点往前一周求成交量均值,拐点往后到查询当天求一个成交量均值,若拐点往后的均值大于拐点往前的均值的50%以上,就满足成交量温和放大判定的第一个条件,若阳线成交量总和大于阴线成交量总和20%以上,并且阳线数量大于阴线数量20%,就满足成交量温和放大判定的第二个条件,若近15日,一半以上时间的阳线成交量比昨日成交量大,一半以上时间的阴线成交量比昨日成交量少,就满足成交量温和放大判定的第三个条件,三个条件均满足时,成交量温和放大判定为真;

(3)在均线多头排列判定时,若当下7日均线高于14日均线,且14日均线高于月均线,判定为真;

(4)在控盘判定时,完全控盘与中度控盘,判定为真;

(5)在资金流判定时,5日超大单和主力为净流入,或20日超大单和主力为净流入,判定为真;

(6)在高位判定时,一年内涨幅超100%判定为真;

(7)在低位判定时,半年内跌幅超50%判定为真;

(8)在次新判定时,一年内上市判定为真。

关于买入筛选的实时指标筛选,股票满足下列条件之一视为该股票通过筛选:

(1)大资金盘中连续稳定流入,股价涨幅已超过3%但低于5%,则当前是一个比较稳定的买入点;

(2)如果股价在60%时间以上位于均线以上,且大资金持续净流入,股价稳定在3%以上且低于5%,则股票表现相对较稳定,可在股价接近均线处买入;

(3)如果盘中大资金持续净流入,但股价却不断下降,当股价稳定在3%以上且低于5%时,可在这个点位进行买入;

(4)当分时量出现底背离,且大资金流入无明显变化,股价稳定在3%以上且低于5%时,可考虑买入;

(5)当MACD出现底背离,且大资金流入无明显变化,股价稳定在3%以上且低于5%时,也是一个买入的机会;

卖出筛选包括三个部分:基本卖出筛选、强制止损、强制止盈,股票满足其中一个部分的卖出条件则推荐卖出。

基本卖出筛选有以下的卖出条件:

(1)当股票出现大资金净流出、分时量顶背离或MACD顶背离等不利信号时,应先考虑是否需要止盈止损。若已达到止盈止损条件,则应全部清仓;

(2)当股票已变为轻度控盘状态,且近5日内出现持续的大资金净流出,则应考虑清仓。因为这可能意味着机构投资者正在撤离该股票;

(3)当日股价曾经涨幅较大,但后来回落至分时均线以下时间超过30%,或没有封涨停板或封板时间少于1小时时,可以考虑出售股票。在这种情况下,应在相对高点出售股票,如顶背离处、涨停价或收盘价等;

(4)当股票出现5%以上的大阳线后,若回调幅度达到大阳线实体长度100%以上,则应卖出股票。这是因为这种情况下股票可能已经超买,需要调整才能恢复平衡;

(5)当股价已经跌破上涨趋势线或30日均线时,应考虑出售股票。因为这可能意味着股票已经进入下降趋势,可能会继续下跌。

强制止损有以下卖出条件:

(1)这只股票亏损已达10%以上,意味着持有此股票的投资者已经承受了一定的风险,如果此股票的亏损不断扩大,投资者的风险就会进一步加大。因此,强制止损是必要的,可以保护投资者的资金安全;

(2)当股价已经跌破最近一个日K线低点或重要均线/颈线支撑,或者跌破最近一根大阳线(5%以上阳线)开盘价时,这通常意味着股票可能会进一步下跌,因为市场情绪已经发生了变化。因此,强制止损是为了避免进一步的亏损,保护投资者的资金安全;

强制止盈有以下卖出条件:

(1)目前股价相比一年来的最低点涨幅已达300%以上,前一日出现涨停板后当日收盘没有封死涨停板,或封涨停板时间少于1小时,则强制止盈,找相对高点卖出。如果前一日出现涨停板后当日开盘价低于涨停价,则应该先观察股价的反弹情况,若出现反弹则可以在适当的高点卖出;

(2)巨量(当日的成交量占其流通盘10%以上)且股价已高于5日均线价格达15%以上,找盘中相对高点卖出。如果巨量下跌,则应该密切关注股价走势,若继续下跌,则在适当高点卖出;

(3)巨量(当日的成交量占其流通盘10%以上),并且出现高开大阴线或十字线或长上影线(上影线占K线实体长度50%以上),找盘中相对高点卖出。如果出现这种情况,则应该密切关注股价走势,观察是否会出现反弹或继续下跌,决定是否在适当高点卖出;

(4)出现其他高位出货型K线形态,则找当日相对高点卖出。本系统采用的高位出货k线形态主要包括:长上下影线、巨阳线重叠、加速度线、大阳线之后第二天走弱、顶部穿头破脚、平顶线。如果出现以上形态,则应该密切关注股价走势,观察是否会出现反弹或继续下跌,决定是否卖出。

加仓筛选依据以下策略:

如果买入后,股价下跌并低于买入价,但不满足卖出条件,则可以在关键均线或K线形态关键颈线处补仓一成。这里的关键均线指的是7日、14日、30日线等,而关键颈线则指头肩底、W底、黄金坑口等形态的颈线。如果最近一个日K线的最低点未被跌破,或最近一根大阳线(5%以上阳线)的开盘价未被跌破,也可以进行一次补仓。需要注意的是,补仓时不能满足卖出条件或止盈止损条件,否则应该等待后续市场变化再做出决策。

具体的,指标筛选模块需要实现4个接口,分别是买入第一轮筛选接口、买入第二轮筛选接口、卖出筛选接口、加仓筛选接口;4个接口由指标筛选模块控制类统一管理,具体管理方法如下:

(1)指标筛选模块控制类管理买入第一轮筛选,本轮筛选将基于日k数据进行筛选,部分数据可以通过Tushare和easyquotation获取,而其他数据将通过爬虫获取;

(2)指标筛选模块控制类管理买入第二轮筛选,在本轮筛选过程中,将依据一系列实时指标来进行筛选。实时数据都是通过requests或requests_html爬虫获取,有实时的股价、最高价、最低价、开盘价、涨幅、成交量、交易额、流通量、超大单净流量、主力净流量;

(3)指标筛选模块控制类管理卖出筛选,本轮筛选将基于日k指标和实时指标进行筛选,日k数据可以通过Tushare、easyquotation、爬虫获取,实时数据通过爬虫获取。卖出筛选需要一年内的日k数据和实时数据计算出所需的指标,来进行筛选;

(4)指标筛选模块控制类管理加仓筛选,本轮筛选同样基于日k指标和实时指标进行筛选,日k数据通过Tushare获取,实时数据通过requests_html爬虫获取。加仓筛选需要两个月内的日k数据和实时数据计算出所需的指标,并进行筛选。

策略回测模块负责计算历史交易和用户持仓的股票收益率。历史回测根据用户交易记录的股票代码和相应日期,从股市数据接口获取相关数据并进行分析,并计算历史交易的收益率。同理,持仓回测根据用户持仓的股票代码和股市数据接口,来计算持仓的收益率。

策略回测模块需要实现3个接口,分别是单股回测接口、历史回测接口、持仓回测接口;所述3个接口由策略回测模块控制类统一管理,具体管理方法如下:

(1)策略回测模块控制类管理单股回测,单股回测基于用户提供的股票代码与日期区间计算收益率与盈亏;

(2)策略回测模块控制类管理历史回测,历史回测基于历史交易信息计算收益率与盈亏;

(3)策略回测模块控制类管理持仓回测,持仓回测基于持仓的股票信息计算收益率与盈亏。

交易管理模块负责记录用户的交易行为,包括买入和卖出记录。模块需要检查用户的输入是否合法,如检查是否重复购买、是否卖出未持有的股票等,并根据交易结果向用户提供反馈。

交易管理模块需要实现3个接口,分别是持股信息查看接口、记录买入接口、记录卖出接口;所述3个接口由交易管理模块控制类统一管理,具体管理方法如下:

(1)交易管理模块控制类管理持股信息查看,包括股票代码、购入日期和其他信息;

(2)交易管理模块控制类管理记录买入,用户买入时,系统会更改持仓,买入信息;

(3)交易管理模块控制类管理记录卖出,用户卖出时,系统会更改持仓,卖出信息,并生成历史交易信息。

图5所示的为股票交易推荐方法业务流程图,服务器会每日刷新图形筛选和第一轮筛选的结果,在股票开盘后,会每五分钟刷新第二轮筛选的结果。用户可以通过前端向服务器发送查询筛选结果的请求,获取筛选的结果。同时,前端也负责绘制单张k线图等资源消耗较少的任务。用户在获得筛选结果后,可以选择是否进行交易,交易结果将会存储在服务器的数据库里,生成交易记录与持仓记录,交易记录可以作为绘制k线图买卖点和回测的依据。

更为具体的说,图形筛选具体步骤如下:

步骤一、系统通过CNN模型筛选所需图形并保存到数据库中;

步骤二、用户查看单张k线图和获取图形筛选结果;

单张k线图绘制功能具体步骤如下:

用户在股票代码上单击右键菜单的查看k线图,前端会向图形筛选控制类发起请求,随即会调用图形筛选服务,系统通过股票数据接口绘制k线图,并进行图像修正、标定买卖点,最后渲染k线图并展示给客户。运行阶段,用户可以拖动日期范围,查看指定日期范围的k线图,用户可以指定显示k线图的部分内容,如只显示k线或30日均线;

对于图形筛选功能,其具体步骤如下:

图形筛选服务会在后台刷新当日的所有股票k线图,作为CNN模型的测试集,根据模型,服务器将当日k线图数据集进行分类筛选,服务器将结果存储到数据库,用户单击查询图形筛选结果,系统返回结果给用户。

指标筛选的具体步骤为:

用户可以在前端设置筛选周期等筛选指标后,向服务器发起请求。请求会被指标筛选控制类处理,并将请求传递给每日筛选服务或分钟筛选服务。这些服务会定时使用每日数据服务和实时数据服务提供的数据完成筛选,并将结果存储在数据库中。最终结果会在前端界面上显示,供用户查看。具体为,当用户在前端界面上设置好筛选周期和其他指标后,点击查询结果时,前端将向服务器发送查询请求。指标筛选控制类接收该请求,然后根据请求类型选择每日筛选服务或分钟筛选服务来完成筛选操作。筛选结果存储在数据库中。数据库中的结果将在用户查询时显示在前端界面上,供用户查看。

具体的,系统通过实时指标与日k指标筛选买入第一轮、买入第二轮、卖出、加仓的指标筛选结果并保存到数据库中。用户通过前端查看买入第一轮、买入第二轮、卖出、加仓的指标筛选结果。

买入第一轮筛选功能的具体步骤如下:

服务器每日访问数据接口并爬取股票数据,筛选日k指标合格的股票代码并存入数据库,用户查询买入第一轮筛选结果,系统反馈用户买入第一轮筛选的结果。

买入第二轮筛选功能的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,筛选实时指标合格的股票代码更新数据库,用户查询买入第二轮筛选结果,系统反馈用户买入第二轮筛选的结果。

卖出筛选的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,从持仓中筛选指标合格的股票代码更新数据库,用户查询卖出筛选结果,系统反馈用户卖出筛选的结果。

加仓筛选的具体步骤如下:

服务器每5分钟访问数据接口并爬虫获取数据,从持仓中筛选指标合格的股票代码更新数据库,用户查询卖出筛选结果,系统反馈用户加仓筛选的结果。

策略回测的具体步骤为:

每日服务器会自动进行历史回测和持仓回测,存储回测结果。当用户在前端点击历史回测时,前端会向服务器发送查询请求。服务器收到请求后,会调用回测服务的历史回测方法来获取历史回测结果,再将结果返回给前端,供用户查看。类似地,当用户在前端点击持仓回测时,前端会向服务器发送请求。服务器收到请求后,会调用回测服务的持仓回测方法来获取持仓回测结果,再将结果返回给前端,供用户查看。

更为具体地说,步骤如下:

步骤一、系统通过持仓信息和历史交易信息计算持仓回测和历史回测结果并保存到数据库中;

步骤二、用户通过前端查看持仓回测和历史回测结果筛选结果,;

持仓回测功能的具体步骤如下:

服务器通过持仓信息每日刷新持仓回测结果到数据库,用户点击持仓回测,系统反馈用户持仓回测结果;

历史回测功能的具体步骤如下:

服务器根据历史交易信息每日刷新历史回测的结果到数据库,用户点击历史回测,系统反馈用户历史回测的结果。

交易管理的具体步骤为:

用户在前端输入股票代码和买入日期后,前端检查输入,并向服务器发起买入请求,交易控制类调用买入服务在数据库中记录买入操作,此时会检查用户是否重复买入;用户在前端单击卖出时,前端向服务器发起卖出请求,交易控制类调用卖出服务在数据库中记录卖出操作,此时会检查用户是否已持仓。

更为具体地说,交易管理模块的步骤如下:

步骤一、用户通过买入和卖出股票更改持仓,买入和卖出时会生成交易记录;

步骤二、用户通过查看持仓了解目前持仓状况;

查看持仓功能的具体步骤如下:

用户点击查看持仓,系统反馈用户的持仓信息;

买入和卖出功能的具体步骤如下:

用户输入股票代码与日期,点击购入或卖出,服务器保存交易记录到数据库中,并反馈用户交易成功。用户可以通过股票代码右键菜单进行买入,若用户不输入日期,默认日期为当天。

需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。

相关技术
  • 一种基于与理想指标体系关联度的指标效能定量化评价方法
  • 一种基于签到数据离散特征量化的位置推荐系统自然噪声过滤方法
技术分类

06120116507593