本发明涉及金融市场,具体为一种证券指标云计算平台及其计算方法。
背景技术:
1、随着证券市场的升温,越来越多的个人参与到证券交易当中去。而在证券交易过程中,大部分证券交易参与者都会用到相关公司所提供的各种行情交易类软件,如:券商,证券投顾公司,证券金融数据公司等。
2、在这类软件中,使用率最高的部分当属各种证券技术指标这块。证券技术指标可以辅助交易者进行标的选择,买卖时机的判断等。所以指标的准确性,及时性非常重要。同时较为复杂的证券指标,其计算压力对于客户端所在的硬件平台的计算性能也有相当大的要求。证券技术指标比较简单的,有只依赖于k线进行计算出来的,如ma,ema,sma,sar,rsi,macd,kdj,boll等等,也有较为复杂的,依赖多种类型数据(如k线数据,财务数据,基本面数据等)综合进行计算的,例如一些公司自研的各种特色指标。
3、业界对于指标计算这块,通用做法一般是这样的:软件生产商先将各种指标计算公式,编译进客户端中。在客户输入股票代码后,先由客户端向服务端请求相关的行情数据。客户端拿到行情数后先画图(k线图或者分时图)展示,然后根据客户设置的需要查看的指标种类,调用对应的指标公式进行计算。在计算过程中,客户端根据计算的需要,实时从服务端请求所需的各种计算数据进行计算,然后再将计算结果进行绘图展示给用户使用。对于证券行业常用的pc客户端和移动端app,通常都是采用这种方式。
4、但这种方式存在如下问题:
5、1.指标计算刷新的速度,极大的依赖于网络环境,和客户端所在硬件平台的计算性能。客户端和服务器之间由于频繁通信交互,需要消耗大量的网络带宽资源。这种场景对于pc客户端来说,可能问题不大,但是对于手机,平板电脑这种终端来说,则会增加用户网络流量资费的开销,且大大减少了机器电量待机时间,同时增加机器的发热量,且由于移动设备带宽资源十分有限,容易导致数据传输效率低,导致客户端整体计算过程时间变长,从而导致指标的刷新性能受到影响。且移动端一般计算性能都不高,受制于移动端设备的供电,散热等问题,也不大适合在移动端上频繁做大量指标计算工作。所以这种业界通用的方式对于移动客户端app十分不友好,体验较差,有的厂商为了规避此问题,会把移动端app上较为复杂的证券技术指标进行删减,进而影响到用户使用体验,甚至让用户只能依赖于pc客户端,无法像使用pc客户端那样随意的去使用移动端app。甚至如果将证券技术指标用在web页面上,这种通用做法将面临更大的问题。
6、2.不利于核心知识产权的保护。很多公司拥有自己研发的特色指标,这些特色指标都是产品的核心竞争力,吸引用户的主要手段。而将这些特色指标计算公式编译进客户端程序中,容易被反编译等技术手段进行破解从而导致核心知识产权的泄露。如果封装成指标算法库,甚至可能会被竞争对手直接引用该库从而快速得到相同的指标计算结果。
7、3.不利于特色指标进行优化升级。由于业界通用做法是将指标计算公式编译进客户端程序,所以,在研究员对指标计算公式实现过程进行优化提升后,只能等客户端进行版本升级,替换成新版本的指标库之后,才能让用户使用上最新版本的指标。而由于客户端部分客户不愿意进行升级,所以又容易造成新的问题:不同版本的客户端程序指标计算结果容易存在差异,进而导致一系列用户使用问题。
8、4.提高了对客户端开发人员的要求,特别在指标计算这方面的专业知识的储备。这将导致组建客户端开发团队难度加大,因为除了要会开发技能,还需要掌握相当多的证券指标计算方面的专业知识。一般这种复合型人才招聘困难,成本往往也会更高,增加了研发的整体成本。
技术实现思路
1、(一)解决的技术问题
2、针对现有技术的不足,本发明提供了一种证券指标云计算平台及其计算方法,能让证券指标数据可以很容易的应用在各种客户端上,且不依赖于客户端自身的计算性能和网络带宽等资源,便于公司对核心特色指标的保护,方便对特色指标进行升级维护,降低公司组建客户端开发团队的难度,降低研发的整体成本。
3、(二)技术方案
4、为实现以上目的,本发明通过以下技术方案予以实现:一种证券指标云计算平台,包括:
5、客户端:用于获取用户服务请求并展示请求结果画面;
6、接口网关:将所有客户端请求,根据各自使用的不同协议,分别进行解析,规整成内部统一请求消息,然后对此请求消息进行处理,并将请求结果按照各个客户端协议进行封装返回;
7、kcache:用于获取k线数据的后台微服务;
8、indexcalcenter:用于提供指标实时计算的微服务;
9、basicinfo:用于提供证券基础信息的微服务;
10、所述indexcalcenter的架构包括:会话处理层,数据缓存层和基础能力层;
11、其中所述会话处理层包括:
12、计算指标请求解析:用于解析,校验请求参数,形成多个证券指标计算请求对象;
13、分发处理会话管理:对解析出来的一系列证券指标计算请求,进行分发处理跟踪,并最终输出返回数据;
14、数据查询封装:根据请求查询指定种类的证券指标数据,并将查询到的历史指标数据和实时指标数据进行拼接,封装;
15、指标计算调度:定时全量计算各个级别,所有证券品种的全部种类的证券指标数据,并更新到实时指标数据缓存供查询用;根据复权信息,在每日日切时,对发生复权的证券品种的所有种类的证券指标数据,重新进行计算,并更新数据到缓存中;
16、数据刷新同步:每日盘后将实时指标数据合并到历史指标数据缓存,并清空实时指标数据缓存,同步数据到db进行备份;
17、所述数据缓存层包括:
18、财务数据:缓存所有股票的全部历史财务数据,供计算指标用;
19、证券代码列表:分类缓存所有需要计算指标的证券标的代码;
20、复权因子数据:缓存所有股票的全量复权信息数据,用于复权处理;
21、历史指标数据缓存:缓存三种复权情况下,各个级别全量历史指标数据;
22、实时指标数据缓存:缓存盘中实时刷新的最新k线对应的指标数据;
23、所述基础能力层包括:
24、redis访问组件:封装redis操作的库;
25、grpc服务组件:封装grpc相关的库,满足grpc微服务启动,注册;
26、mysql访问组件:封装mysql操作的库;
27、通用指标计算库:封装业界通用证券指标计算的库;
28、特色指标计算库:封装公司自研的特色指标的库;
29、所述客户端请求查看k线和指标数据后,通过接口网关请求kcache获取k线数据,并向indexcalcenter请求k线对应的指标数据,indexcalcenter向kcache获取k线数据并向basicinfo获取对应证券的基础数据,计算出指标数据,接口网关对从kcache获取的k线数据和从indexcalcenter获取的指标数据进行封装,并将封装后的数据传至客户端,从客户端展示所请求的k线和指标数据。
30、优选的,所述客户端包括pc客户端、移动端app、webh5。
31、优选的,所述证券基础信息包括财务信息、研报分析、行业信息、基础面分析信息。
32、优选的,所述业界通用证券指标计算包括ma、ema、sma、sar、rsi、macd、kdj、boll。
33、优选的,所述indexcalcenter的工作步骤如下:
34、s1、加载配置项,初始化日志工具模块;
35、s2、加载复权数据,并计算复权计算因子数据并缓存,便于后续计算用;
36、s3、加载所有股票的全量历史财务数据;
37、s4、初始化证券代码列表,包括所有需要计算指标数据的证券品种,包括:股票,指数,板块指数;
38、s5、计算历史数据的全部指标数据,并缓存进历史指标数据缓存模块;
39、s6、启动指标实时计算线程,根据盘中最新行情数据变化实时计算刷新当日指标数据,并缓存进实时指标数据缓存模块;
40、s7、启动grpc服务进行监听,用于接受外部对指标数据的请求;
41、s8、注册该grpc服务到etcd组件,用于组建微服务集群,提供系统高可用性及负载均衡能力;
42、s9、开始接收指标计算请求,并处理请求返回对应的指标数据。
43、一种证券指标云计算平台的计算方法,采用前述的一种证券指标云计算平,包括以下步骤:
44、步骤1:用户在客户端上执行查看k线和指定的证券技术指标操作,客户端捕获该操作请求并执行;
45、步骤2:客户端向接口网关发起请求,请求k线和指定的多个证券技术指标数据;
46、步骤3:接口网关先向kcache微服务请求k线数据用于客户端展示;
47、步骤4:kcache微服务执行该k线数据请求,查询并根据请求参数拼接k线数据;
48、步骤5:kcache将k线数据返回给接口网关;
49、步骤6:接口网关向indexcalcenter微服务请求k线数据对应的多种证券指标数据;
50、步骤7:indexcalcenter微服务根据请求的多个证券指标类型,确定计算所需要的k线数据范围,并向kcache发起请求;
51、步骤8:kcache微服务执行该k线数据请求,查询并根据请求参数拼接k线数据;
52、步骤9:kcache将k线数据返回给indexcalcenter微服务;
53、步骤10:indexcalcenter微服务根据请求的多个证券指标类型,确定需要获取的证券基础数据,并向basicinfo微服务发起请求;
54、步骤11:asicinfo微服务返回指定的证券基础数据给indexcalcenter;
55、步骤12:indexcalcenter微服务根据k线数据,证券基础数据,依次对请求中指定的各个证券指标进行计算;
56、步骤13:indexcalcenter微服务计算结束后,将计算出来的证券指标数据返回给接口网关;
57、步骤14:接口网关根据客户端使用的协议类型,对获取到的k线数据和证券指标数据,统一进行封装编码;
58、步骤15:接口网关将封装编码后数据返回给客户端;
59、步骤16:客户端根据返回的数据,进行k线图形和证券指标图形的描画。
60、(三)有益效果
61、本发明将复杂的指标计算从客户端转移到了后台服务端上进行,从而大大减轻了客户端的整体压力,客户端只保留了画图展示功能,让客户端不用做任何指标计算,大大减少了客户端和后台服务端之间的数据传输量,从而节省了客户端的电量、流量的消耗,提升了移动端的续航能力,节省了流量带宽消耗,降低设备发热量,整体界面刷新也会更流畅,提升了用户体验,减少了客户端后续开发和维护的工作量;
62、同时降低了对客户端开发人员在指标计算这块专业知识的依赖度,从而使客户端开发难度大大降低。可以以更低人员成本组建客户端开发团队;另外将指标计算放在服务端,更有利于对自研特色指标的保护,客户端请求到的指标数据都是计算后的结果,只能用于画图,不会接触到任何计算过程,这样就彻底避免了客户端被技术破解导致的泄密问题;
63、由于指标计算都放在了服务端去实现,可以随时通过升级后台服务程序,随时将优化过的指标推送给用户,且用户无感知;而且因为指标数据均来自于同一个计算服务,所以多种客户端上取到的指标数据也可以保持一致,且在多种客户端上无差别通用,从而提升了用户体验。