K线数据检查方法、装置、计算机设备及可读存储介质
技术领域
本发明涉及金融行业行情数据存储
技术领域
,尤其涉及一种K线数据检查方法、装置、计算机设备及计算机可读存储介质。背景技术
金融行业中,在金融行情的传输、加工与存储过程中,由于行情数据的数据量较大,且行情数据从产生到存储经过的处理路径较长,对行情数据的整个传输与存储的系统可靠性、时延、正确性及完整性要求很高,例如,在证券行业中,描述行情的K线使用最为普遍,且K线的数据量也比较大。
传统技术中,对于金融的历史行情存储,一般情况下,是用到金融的历史行情数据时,发现行情数据存在缺失等问题,再根据行情数据对应的原始数据进行修补,因此,在将大量的行情数据进行存储时,不能及时发现行情数据的不完整,整个过程滞后且繁琐,人工干预较多,降低了存储的历史行情的正确性。
发明内容
本发明提供了一种K线数据检查方法、装置、计算机设备及计算机可读存储介质,能够解决传统技术中K线数据检查效率较低的技术问题。
第一方面,本发明提供了一种K线数据检查方法,包括:获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,从预设K线数据库并行获取每个所述预设证券代码的预设类型K线对应的K线数量;将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致;若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线。
第二方面,本发明还提供了一种K线数据检查装置,包括:第一获取单元,用于获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,从预设K线数据库并行获取每个所述预设证券代码的预设类型K线对应的K线数量;第一判断单元,用于将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致;第一判定单元,用于若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线。
第三方面,本发明还提供了一种计算机设备,其包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述K线数据检查方法的步骤。
第四方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器执行所述K线数据检查方法的步骤。
本发明提供了一种K线数据检查方法、装置、计算机设备及计算机可读存储介质。本发明通过获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,并行获取每个所述预设证券代码的预设类型K线对应的K线数量,将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致,若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线,若所述K线数量与所述预设目标数量一致,判定所述预设K线为正常K线,借助于预设类型K线包含的预设K线序号,获取预设类型K线对应的K线数量,且并行检查多个证券代码各自的预设类型K线对应的K线数量,可以实现对预设K线数据库中大量K线数据的及时检查,尤其可以实现对当天入库的大量K线数据的及时检查,能够极大缩短对存入预设K线数据库作为历史K线的K线数据进行检查的检查用时,提高对历史K线的检查效率,尤其能够及时发现存在异常的K线数据,进而及时的保证预设K线数据库中历史K线的完整性与正确性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的K线数据检查方法的一个流程示意图;
图2为本发明实施例提供的K线数据检查方法的第一个子流程示意图;
图3为本发明实施例提供的K线数据检查方法的第二个子流程示意图;
图4为本发明实施例提供的K线数据检查方法的第三个子流程示意图;
图5为本发明实施例提供的K线数据检查方法的第四个子流程示意图;
图6为本发明实施例提供的K线数据检查方法的第五个子流程示意图;
图7为本发明实施例提供的K线数据检查装置的一个示意性框图;
图8为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
请参阅图1,图1为本发明实施例提供的K线数据检查方法的一个流程示意图。如图1所示,该方法包括以下步骤S11-S14:
S11、获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,从预设K线数据库并行获取每个所述预设证券代码的预设类型K线对应的K线数量。
其中,K线为K线图,股市及期货市场中的K线图是以每个时间分析周期的开盘价、最高价、最低价和收盘价绘制而成,K线类型包括分钟K线、日K线、周K线及月K线,分别以分钟为时间分析周期(例如1分钟K线或者5分钟K线)、交易日为时间分析周期、以一周为时间分析周期及以一个月为时间分析周期等不同时间分析周期各自对应的行情。
预设K线序号用于描述K线及所述K线对应的时间区间在所处的预设时间周期中的顺序。例如,以一个证券交易日为预设时间周期进行K线数据存储时,若所述证券交易日的交易时间为上午9:30至11:30,针对1分钟K线,上午9点30分钟至上午9点31分钟之间的行情描述的1分钟K线为第一根K线,所述第一根K线对应的K线序号1用于描述第1个1分钟K线的K线顺序,同时描述上午9点30分钟至上午9点31分钟对应的时间区间在该证券交易日中的时间顺序,同理,上午9点31分钟至上午9点32分钟之间的行情描述的1分钟K线为第二根K线,所述第二根K线对应的K线序号2用于描述第2个1分钟K线的K线顺序,同时描述上午9点31分钟至上午9点32分钟对应的时间区间在该证券交易日中的时间顺序。
具体地,将预设证券代码的预设类型K线包含的所有K线依次存入预设K线数据库时,可以按照所述K线描述的行情的时间区间对应的时间顺序进行存储,并按照所述时间顺序将所述K线进行对应编号,由此,存入所述预设K线数据库的K线是按照时间顺序组成的K线集合,且将所述K线集合包含的K线按照对应的时间顺序进行顺序编号,同时可得到K线对应的K线序号,即K线的K线序号与行情对应的时间区间是固定对应关系,所述K线序号可以用序号KEY进行描述,序号KEY对应的序号值(即VALUE)描述K线具体的序号,所述K线序号也是以时间顺序进行排序的,且在K线不存在缺失的情况下,最大的K线序号可以描述所有K线的数量对应的K线数量。例如,请参阅表格1,以一个证券交易日为预设时间周期进行K线数据存储时,若所述证券交易日的交易时间为上午9:30至11:30,下午为13:00至15:00,针对1分钟K线,K线完整的情况下,应该共有240根K线,上午9点30分钟至上午9点31分钟之间的时间区间对应的行情描述的1分钟K线为第一根K线,第一根K线的K线序号固定对应该证券交易日的上午9点30分钟至上午9点31分钟之间的时间区间,上午9点31分钟至上午9点32分钟之间对应的时间区间的行情描述的1分钟K线可以为第二根K线,第二根K线的K线序号固定对应该证券交易日的上午9点31分钟至上午9点32分钟之间的时间区间,若缺少了第三根K线,第四根K线的K线序号固定对应上午9点33分钟至上午9点34分钟之间的时间区间,由此,K线的K线序号与K线的K线时间对应的时间区间是固定对应关系,依次类推,可以根据K线的K线序号确定所述K线序号对应的时间区间(即K线所描述的行情对应的时间区间,又可以称为K线时间或者行情时间),如表格1所述,第一根K线的K线序号对应的K线时间为上午9点30分钟至上午9点31分钟之间的时间区间,在1分钟K线不缺失的情况下,一个证券交易日总共有240根1分钟K线。请参阅表格2,表格2是在缺失第2根K线的情况下,总共有239根K线的示例。
表格1
表格2
进一步地,所述获取多个预设证券代码的步骤包括:
遍历预设证券代码列表,获取所述预设证券代码列表包含的多个预设证券代码。
具体地,对于证券行业,由于证券代码较多,对于需要进行K线检查的证券代码,可以通过预先设置证券代码列表存储所有证券代码,针对较多的证券代码,进一步通过遍历方式,遍历所述预设证券代码列表,以获取所述预设证券代码列表包含的多个预设证券代码,可以有序的对所有证券代码的K线数据进行检查,以避免遗漏证券代码的K线数据,或者重复检查某一证券代码的K线数据,提高依次顺序获取预设证券代码的效率,进而可以提高对K线数据检查的效率。
在对所有证券代码的K线数据进行检查时,可以遍历预设证券代码列表,依次获取所述预设证券代码列表包含的多个预设证券代码,并根据所述证券代码,基于预设K线数据库中预设类型K线包含的预设K线序号,统计所有所述预设K线序号的数量,进而得到所述预设类型K线所包含K线的K线数量,或者根据所述预设K线序号,依次从所述预设K线数据库中取出所述预设类型K线包含的所有K线,并统计所有K线对应的K线数量,以从预设K线数据库中,获取每个所述证券代码的预设类型K线对应的K线数量,且可以并行获取多个所述证券代码各自的预设类型K线对应的K线数量,其中,所述预设类型K线可以为分钟K线、日K线、周K线、月K线及季K线等类型K线。例如,在一证券交易日,若预设类型K线为1分钟K线,对于证券代码A,可以根据1分钟K线包含的预设K线序号,获取证券代码A的1分钟K线包含的所有K线的数量对应的K线数量KA1,同样,可以获取证券代码A的3分钟K线对应的K线数量KA3,获取证券代码A的5分钟K线对应的K线数量KA5等,还可以并行获取证券代码A、获取证券代码B及获取证券代码C各自的预设类型K线对应的K线数量,例如,还可以获取证券代码B的1分钟K线对应的K线数量KB1,获取证券代码B的3分钟K线对应的K线数量KB3等。
S12、将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致。
具体地,由于K线是以每个时间分析周期进行绘制的,因此,在预设时间周期内的K线的K线数量是可以预先确定的。例如,针对预设类型K线为分钟K线的K线,若每个证券交易日的交易时间为4个小时,在一个证券交易日内,1分钟K线应该有240条,3分钟K线应该有80条,5分钟K线应该有48条等。因此,若要检查预设证券代码的预设类型K线的K线数量,可以根据预设时间周期,预先确定预设类型K线对应的预设目标数量。
获取所述证券代码的预设类型K线对应的K线数量后,将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致。
S13、若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线;
S14、若所述K线数量与所述预设目标数量一致,判定所述预设类型K线为正常K线。
具体地,判断所述K线数量与所述预设目标数量是否一致,若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线,即所述预设类型K线包含的K线存在K线缺失等异常问题,若所述K线数量与所述预设目标数量一致,判定所述预设类型K线为正常K线。例如,针对上述证券交易日,若要检查证券代码A的1分钟K线,可以从预设K线数据库中获取证券代码A的1分钟K线的K线数量KA1,判断所述K线数量KA1是否为240根,若所述K线数量KA1为240根,判定所述预设K线数据库中证券代码A的1分钟K线的K线数量是正确的,若所述K线数量KA1不为240根,判定所述预设K线数据库中证券代码A的1分钟K线的K线数量是异常的,且还可以同时并行检查证券代码A、证券代码B及证券代码C等多个证券代码各自的预设类型K线对应的K线数量。
本发明实施例,通过获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,并行获取每个所述预设证券代码的预设类型K线对应的K线数量,将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致,若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线,若所述K线数量与所述预设目标数量一致,判定所述预设K线为正常K线,借助于预设类型K线包含的预设K线序号,获取预设类型K线对应的K线数量,且并行检查多个证券代码各自的预设类型K线对应的K线数量,可以实现对预设K线数据库中大量的计算加工后的金融行情指标数据对应的K线数据的及时检查,尤其可以实现对当天入库的大量K线数据的及时检查,能够极大缩短对存入预设K线数据库作为历史K线的K线数据进行检查的检查用时,提高对历史K线的检查效率,尤其能够及时发现存在异常的K线数据,进而及时的保证预设K线数据库中历史K线的完整性与正确性。
请参阅图2,图2为本发明实施例提供的K线数据检查方法的第一个子流程示意图。如图2所示,在该实施例中,所述若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线的步骤之后,还包括:
S15、根据所述异常K线包含的所有所述预设K线序号的顺序,获取相邻两个预设K线序号,并计算相邻两个所述预设K线序号的差值;
S16、判断所述差值是否大于1;
S17、若所述差值大于1,获取相邻两个所述预设K线序号之间包含的中间序号,将所述中间序号作为缺失K线对应的缺失K线序号,并将所述缺失K线序号存储至预设缺失K线数据缓存表;
S18、若所述差值不大于1,无需根据相邻两个所述预设K线序号进一步处理。
具体地,针对异常K线,可以进一步确定所述异常K线包含的哪些具体K线存在缺失。例如,针对上述的1分钟K线,在一个证券交易日,应该有240根1分钟K线,但若预设K线数据库中某一证券代码的1分钟K线的K线数量为238根,可以判定该证券代码的1分钟K线缺失2根,可以进一步确定具体缺失了哪两根1分钟K线。由于K线的预设K线序号与K线的K线时间存在对应关系,且预设K线序号是以时间顺序进行顺序编号,因此,相邻的两根K线的预设K线序号之间的差值应该为1,因此,可以根据所述异常K线包含的所有预设K线序号的顺序,例如,所述预设K线序号由大到小的顺序,或者所述预设K线序号由小到大的顺序,一次获取相邻两个预设K线序号,并计算相邻两个所述预设K线序号的差值,判断所述差值是否大于1,若所述差值不大于1,判定相邻两个所述预设K线序号之间不存在K线缺失,无需根据相邻两个所述预设K线序号进一步处理,再获取下一对相邻两个预设K线序号,并计算下一对相邻两个所述预设K线序号的差值,再次进行判断,若所述差值大于1,判定相邻两个所述预设K线序号之间存在K线缺失,获取相邻两个所述预设K线序号之间包含的中间序号,将所述中间序号作为缺失K线对应的缺失K线序号,并将所述缺失K线序号存储至预设缺失K线数据缓存表,再获取下一对相邻两个预设K线序号,并计算下一对相邻两个所述预设K线序号的差值,再次进行判断,循环上述过程,直至对所有相邻两个预设K线序号均进行了判断。例如,若相邻两个预设K线序号分别为2与3,两者的差值为1,相邻两个预设K线序号不存在K线缺失,若相邻两个预设K线序号分别为2与5,两者的差值为3,相邻两个预设K线序号存在K线缺失,2与5之间包含的中间序号为3与4,将3与4分别作为缺失K线各自对应的缺失K线序号,并将所述缺失K线序号存储至预设缺失K线数据缓存表,且缺失2根K线。因此,在预设类型K线为异常K线时,可以通过预设类型K线包含的预设K线序号,并计算相邻两个预设K线序号的差值,迅速确定缺失K线的K线序号。
进一步地,请参阅图3,图3为本发明实施例提供的K线数据检查方法的第二个子流程示意图。如图3所示,在该实施例中,所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤包括:
S171、根据所述缺失K线序号对应的缺失K线所属的异常类型K线,确定所述异常类型K线所对应的异常证券代码;
S172、根据所述异常证券代码,确定预设数据容器Unordered_map包含的所述异常证券代码对应的预设异常结构体;
S173、根据所述异常类型K线,确定所述预设异常结构体包含的所述异常类型K线对应的预设异常存储子map表;
S174、将所述缺失K线序号存储至预设异常存储子map表包含的缺失序号关键字对应的列。
具体地,对于缺失的K线所对应的缺失K线序号,可以基于数据容器Unordered_map设置预设缺失K线数据缓存表,用于存储所述缺失K线序号,以便后续根据所述缺失K线序号补充对应的所缺失的K线。对于预设数据容器Unordered_map,可以以证券代码为关键字KEY,由于每个预设证券代码一般会包含多种类型的K线,针对同一个证券代码所包含的多种类型的K线均存在缺失K线的可能情形,为了节省存储多种类型K线的缺失K线序号的存储空间,优化存储缺失K线序号的存储结构,提高对缺失K线序号的存储效率,每个证券代码作为关键字对应的关键值VALUE可以设置成结构体(即预设异常结构体),所述预设异常结构体包含预设证券代码的每种类型K线对应的预设异常存储子map表,将所述缺失K线序号存储至所述预设异常存储子map表中,从而实现一个证券代码通过一个结构体存储多种类型K线各自对应的缺失K线序号,尤其是对于证券行业包含的大量证券代码,若对当天入库的K线数据进行检查时,所述大量证券代码会存在较多缺失K线序号的情形,每个证券交易日均需进行K线数据检查,则会产生更多的缺失K线序号数据及需要较大的系统开销,可以充分利用上述结构体优化存储缺失K线序号的存储结构,节省存储多种类型K线的缺失K线序号的存储空间,提高对缺失K线序号的存储效率与内存资源的利用率,从而整个K线服务系统的性能。进一步地,所述预设异常存储子map表的子关键字KEY可以为所述缺失K线序号,子关键字KEY对应的关键值VALUE可以为对所述缺失K线序号对应K线的处理状态,若所述缺失K线序号对应的K线已修补,可以将所述缺失K线序号对应K线的处理状态设置为“已处理”,若所述缺失K线序号对应的K线未修补,可以将所述缺失K线序号对应K线的处理状态设置为“未处理”,从而便于跟进对所述缺失K线序号对应K线的处理进度,从而提升对所述缺失K线序号对应K线的处理效率。例如,针对一证券代码包含的1分钟K线、5分钟K线、15分钟K线、30分钟K线、60分钟K线及120分钟K线,可以设置一个Unordered_map作为预设缺失K线数据缓存表,以证券代码为关键字KEY,每个KEY对应的关键值Value为一个结构体n(map1,map5,map15,map30,map60,map120),,结构体即为预设异常结构体,该结构体由map1、map5、map15、map30、map60及map120共6个子map表组成,此6个子map即为各个类型K线对应的预设异常存储子map表,其中,子map1表用于存储1分钟K线的缺失K线数据,子map5表用于存储5分钟K线的缺失K线数据,子map15表用于存储15分钟K线的缺失K线数据等,每个子map表的KEY为对应类型k线的缺失K线序号,KEY对应的Value为缺失K线序号对应的缺失K线的处理状态,若该证券代码为股票,该股票的某种k线丢失,算出丢失K线对应的缺失K线序号,在对应子map表中添加该缺失K线序号KEY,即实现将所述缺失K线序号存储至预设缺失K线数据缓存表。
将所述缺失K线序号存储至预设缺失K线数据缓存表时,先根据所述缺失K线序号对应的缺失K线所属的异常类型K线,例如所述缺失K线序号对应的缺失K线为1分钟K线、5分钟K线或者为15分钟K线,从而可以确定所述缺失K线序号对应K线所述的K线类型(即异常类型K线),再根据所述异常类型K线,确定所述异常类型K线所对应的异常证券代码,然后根据所述异常证券代码,确定预设数据容器Unordered_map包含的所述异常证券代码对应的预设异常结构体,再根据所述异常类型K线,确定所述预设异常结构体包含的所述异常类型K线对应的预设异常存储子map表,最后将所述缺失K线序号存储至预设异常存储子map表包含的缺失序号关键字对应的列。
请参阅图4,图4为本发明实施例提供的K线数据检查方法的第三个子流程示意图。如图4所示,在该实施例中,所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤之后,还包括:
S19、获取所述缺失K线序号,并根据所述缺失K线序号,确定所述缺失K线序号对应的缺失K线所描述行情的行情时间;
S20、根据所述行情时间,获取所述行情时间对应的初始行情数据;
S21、基于所述初始行情数据,计算所述初始行情数据对应的所述缺失K线,并将所述缺失K线存储至所述预设K线数据库中所述缺失K线对应的K线缺失位置。
具体地,由于K线的K线序号与行情对应的时间区间(即行情时间)是固定对应关系,因此,获取所述缺失K线序号后,可以根据所述缺失K线序号,确定所述缺失K线序号对应的缺失K线所描述行情的行情时间,进而可以根据所述行情时间,获取所述行情时间对应的初始行情数据,例如,可以从Kafka消费快照消息以获取所述行情时间对应的初始行情数据,最后再基于所述初始行情数据,计算所述初始行情数据对应的所述缺失K线,并将所述缺失K线存储至所述预设K线数据库中所述缺失K线对应的K线缺失位置,即所述缺失K线按照K线的初始预设存储顺序所应该对应的存储位置,同时,将所述缺失K线序号从所述预设缺失K线数据缓存表中移除,从而可以每天自动及时发现入库的K线数据的缺失及实现对缺失K线的自动修补,以及时保证预设K线数据库中历史K线的完整性与正确性,且通过K线数据检查,由于仅仅修复了缺失的K线,相比通过计算全部的K线数据实现对K线数据的检查与修复,不但实现了自动找出局部少量缺失的K线,并局部重新计算生成的新的正确的K线后入库,计算量较小的实现了K线数据的修复,提升了修复数据的效率,节省了计算机设备的计算资源。
进一步地,请参阅图5,图5为本发明实施例提供的K线数据检查方法的第四个子流程示意图。如图5所示,在该实施例中,所述计算所述初始行情数据对应的所述缺失K线的步骤之后,还包括:
S22、判断是否存在所述缺失K线的关联K线,其中,所述关联K线为基于所述缺失K线进行计算而得到的K线;
S23、若存在所述关联K线,获取所述关联K线对应的关联K线序号,并根据所述关联K线序号,基于所述缺失K线,重新计算所述关联K线,并将所述关联K线存储至所述预设K线数据库中所述关联K线对应的关联K线位置;
S24、若不存在所述关联K线,无需根据所述缺失K线进行处理。
具体地,在多种类型K线中,不同类型K线之间会存在关联关系,其中,一些K线会是在其它K线的基础上进行计算得到的。例如,在一个证券交易日的同一行情时间,该行情时间所属的5分钟K线为基于1分钟K线进行计算得到的,15分钟K线为基于5分钟K线进行计算得到的。因此,通过K线数据检查,判断存在缺失K线,并将缺失K线进行修补后,需要进一步判断是否存在所述缺失K线的关联K线,可以通过所述缺失K线对应的K线类型进行判断,若所述K线类型为1分钟K线,且还存在依赖1分钟K线的5分钟K线、15分钟K线等K线类型,判定存在所述缺失K线的关联K线,若所述K线类型为1分钟K线,但不存在依赖1分钟K线的5分钟K线、15分钟K线等K线类型,判定不存在所述缺失K线的关联K线。
判断是否存在所述缺失K线的关联K线,其中,所述关联K线为基于所述缺失K线进行计算而得到的K线,若存在所述关联K线,获取所述关联K线对应的关联K线序号,并根据所述关联K线序号,获取所述关联K线序号对应的行情时间内的相关行情数据,并基于所述缺失K线,重新计算所述关联K线,并将所述关联K线存储至所述预设K线数据库中所述关联K线对应的关联K线位置,若不存在所述关联K线,无需根据所述缺失K线进行处理。例如,如果只有1分钟k线有丢失,修复1分钟k线后,需要重新计算由该1分钟k线计算得出的1分钟以上的k线,例如,针对基于1分钟K线的5分钟K线,由5分钟k线的预设K线序号,计算出依赖的1分钟k线序号index(5分钟K线计算依赖的1分钟k线序号[index-5,index]),把序号转换为对应时间范围的K线时间kline_time,从数据库中取出这个时间范围的1分钟k线,重新计算出5分钟k线,并将重新计算的5分钟K线写入预设K线数据库。同时,由于5分钟以上的k线都受5分钟k线影响,5分钟以上的k线均需要重新算,所以需要先由1分钟的index序号换算成15分钟K线及30分钟K线等大于5分钟的k线序号,再计算出依赖的1分钟k线的范围,再从数据库中取出相关行情进行计算,算好后对应更新入库,并判断若所述预设缺失K线数据缓存表中存在上述更新后的K线的K线序号,从所述预设缺失K线数据缓存表中移除更新后的K线的K线序号,依次执行以上过程直到120分钟k线完成。同理,15分钟k线的更新,方法与5分钟K线的更新方法相同,影响的范围是大于15分钟的k线,30分钟k线的更新,方法与5分钟K线的更新方法相同,影响的范围是大于30分钟的k线等,以此类推,直至将所有关联K线更新完毕。
请参阅图6,图6为本发明实施例提供的K线数据检查方法的第五个子流程示意图。如图6所示,在该实施例中,所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤之后,还包括:
S25、统计所述预设缺失K线数据缓存表包含的所有所述缺失K线序号的序号数量;
S26、判断所述序号数量是否大于预设数量阈值;
S27、若所述序号数量大于预设数量阈值,重新计算所有所述预设证券代码的预设类型K线包含的K线,以得到对应的更新K线,并将所述更新K线替换所述预设K线数据库包含的对应初始K线;
S28、若所述序号数量小于或者等于预设数量阈值,执行所述获取所述缺失K线序号,并根据所述缺失K线序号,确定所述缺失K线序号对应的缺失K线所描述行情的行情时间的步骤。
具体地,当k线丢失数量超过预设数量阈值对应的K线条数时,通过检查缺失K线并进行修补,以实现K线的回补对应数据计算量过大,此时,可以直接通过重新消费快照的方式,将所有所述预设证券代码的预设类型K线包含的K线进行重新计算,以得到对应的更新K线,并将所述更新K线替换所述预设K线数据库包含的对应初始K线,尤其对于当天K线数据的及时检查与修补时,可以将当天分钟k线重新全部计算出来,补充到所述预设K线数据库中,可以更快的实现所述预设K线数据库k线数据的完整和正确,从而可以根据缺失K线的缺失数量动态调整所述预设K线数据库k线数据的修复方式,能够提高对所述预设K线数据库k线数据的修复的灵活性与效率。
需要说明的是,上述各个实施例所述的K线数据检查方法,可以根据需要将不同实施例中包含的技术特征重新进行组合,以获取组合后的实施方案,但都在本发明要求的保护范围之内。
请参阅图7,图7为本发明实施例提供的K线数据检查装置的一个示意性框图。对应于上述所述K线数据检查方法,本发明实施例还提供一种K线数据检查装置。如图7所示,该K线数据检查装置包括用于执行上述所述K线数据检查方法的单元,该K线数据检查装置可以被配置于计算机设备中。具体地,请参阅图7,所述K线数据检查装置70包括第一获取单元701、第一判断单元702及第一判定单元703。
其中,第一获取单元701,用于获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,从预设K线数据库并行获取每个所述预设证券代码的预设类型K线对应的K线数量;
第一判断单元702,用于将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致;
第一判定单元703,用于若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线。
在一实施例中,所述K线数据检查装置70还包括:
第二获取单元,用于根据所述异常K线包含的所有所述预设K线序号的顺序,获取相邻两个预设K线序号,并计算相邻两个所述预设K线序号的差值;
第二判断单元,用于判断所述差值是否大于1;
存储单元,用于若所述差值大于1,获取相邻两个所述预设K线序号之间包含的中间序号,将所述中间序号作为缺失K线对应的缺失K线序号,并将所述缺失K线序号存储至预设缺失K线数据缓存表。
在一实施例中,所述存储单元包括:
第一确定子单元,用于根据所述缺失K线序号对应的缺失K线所属的异常类型K线,确定所述异常类型K线所对应的异常证券代码;
第二确定子单元,用于根据所述异常证券代码,确定预设数据容器Unordered_map包含的所述异常证券代码对应的预设异常结构体;
第三确定子单元,用于根据所述异常类型K线,确定所述预设异常结构体包含的所述异常类型K线对应的预设异常存储子map表;
存储子单元,用于将所述缺失K线序号存储至预设异常存储子map表包含的缺失序号关键字对应的列。
在一实施例中,所述K线数据检查装置70还包括:
第三获取单元,用于获取所述缺失K线序号,并根据所述缺失K线序号,确定所述缺失K线序号对应的缺失K线所描述行情的行情时间;
第四获取单元,用于根据所述行情时间,获取所述行情时间对应的初始行情数据;
计算单元,用于基于所述初始行情数据,计算所述初始行情数据对应的所述缺失K线,并将所述缺失K线存储至所述预设K线数据库中所述缺失K线对应的K线缺失位置。
在一实施例中,所述K线数据检查装置70还包括:
第三判断单元,用于判断是否存在所述缺失K线的关联K线,其中,所述关联K线为基于所述缺失K线进行计算而得到的K线;
第五获取单元,用于若存在所述关联K线,获取所述关联K线对应的关联K线序号,并根据所述关联K线序号,基于所述缺失K线,重新计算所述关联K线,并将所述关联K线存储至所述预设K线数据库中所述关联K线对应的关联K线位置。
在一实施例中,所述K线数据检查装置70还包括:
统计单元,用于统计所述预设缺失K线数据缓存表包含的所有所述缺失K线序号的序号数量;
第四判断单元,用于判断所述序号数量是否大于预设数量阈值;
替换单元,用于若所述序号数量大于预设数量阈值,重新计算所有所述预设证券代码的预设类型K线包含的K线,以得到对应的更新K线,并将所述更新K线替换所述预设K线数据库包含的对应初始K线。
在一实施例中,所述第一获取单元701,具体用于遍历预设证券代码列表,获取所述预设证券代码列表包含的多个预设证券代码。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述K线数据检查装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
同时,上述K线数据检查装置中各个单元的划分和连接方式仅用于举例说明,在其他实施例中,可将K线数据检查装置按照需要划分为不同的单元,也可将K线数据检查装置中各单元采取不同的连接顺序和方式,以完成上述K线数据检查装置的全部或部分功能。
上述K线数据检查装置可以实现为一种计算机程序的形式,该计算机程序可以在如图8所示的计算机设备上运行。
请参阅图8,图8是本发明实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是台式机电脑或者服务器等计算机设备,也可以是其他设备中的组件或者部件。
参阅图8,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504,所述存储器也可以为易失性存储介质。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行一种上述K线数据检查方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种上述K线数据检查方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图8所示实施例一致,在此不再赘述。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:获取多个预设证券代码,并根据所述预设证券代码,基于预设类型K线包含的预设K线序号,从预设K线数据库并行获取每个所述预设证券代码的预设类型K线对应的K线数量;将所述K线数量与所述预设类型K线对应的预设目标数量进行比对,并判断所述K线数量与所述预设目标数量是否一致;若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线。
在一实施例中,所述处理器502在实现所述若所述K线数量与所述预设目标数量不一致,判定所述预设类型K线为异常K线的步骤之后,还实现以下步骤:
根据所述异常K线包含的所有所述预设K线序号的顺序,获取相邻两个预设K线序号,并计算相邻两个所述预设K线序号的差值;
判断所述差值是否大于1;
若所述差值大于1,获取相邻两个所述预设K线序号之间包含的中间序号,将所述中间序号作为缺失K线对应的缺失K线序号,并将所述缺失K线序号存储至预设缺失K线数据缓存表。
在一实施例中,所述处理器502在实现所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤时,具体实现以下步骤:
根据所述缺失K线序号对应的缺失K线所属的异常类型K线,确定所述异常类型K线所对应的异常证券代码;
根据所述异常证券代码,确定预设数据容器Unordered_map包含的所述异常证券代码对应的预设异常结构体;
根据所述异常类型K线,确定所述预设异常结构体包含的所述异常类型K线对应的预设异常存储子map表;
将所述缺失K线序号存储至预设异常存储子map表包含的缺失序号关键字对应的列。
在一实施例中,所述处理器502在实现所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤之后,还实现以下步骤:
获取所述缺失K线序号,并根据所述缺失K线序号,确定所述缺失K线序号对应的缺失K线所描述行情的行情时间;
根据所述行情时间,获取所述行情时间对应的初始行情数据;
基于所述初始行情数据,计算所述初始行情数据对应的所述缺失K线,并将所述缺失K线存储至所述预设K线数据库中所述缺失K线对应的K线缺失位置。
在一实施例中,所述处理器502在实现所述计算所述初始行情数据对应的所述缺失K线的步骤之后,还实现以下步骤:
判断是否存在所述缺失K线的关联K线,其中,所述关联K线为基于所述缺失K线进行计算而得到的K线;
若存在所述关联K线,获取所述关联K线对应的关联K线序号,并根据所述关联K线序号,基于所述缺失K线,重新计算所述关联K线,并将所述关联K线存储至所述预设K线数据库中所述关联K线对应的关联K线位置。
在一实施例中,所述处理器502在实现所述将所述缺失K线序号存储至预设缺失K线数据缓存表的步骤之后,还实现以下步骤:
统计所述预设缺失K线数据缓存表包含的所有所述缺失K线序号的序号数量;
判断所述序号数量是否大于预设数量阈值;
若所述序号数量大于预设数量阈值,重新计算所有所述预设证券代码的预设类型K线包含的K线,以得到对应的更新K线,并将所述更新K线替换所述预设K线数据库包含的对应初始K线。
在一实施例中,所述处理器502在实现所述获取多个预设证券代码的步骤时,具体实现以下步骤:
遍历预设证券代码列表,获取所述预设证券代码列表包含的多个预设证券代码。
应当理解,在本发明实施例中,处理器502可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路 (Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来完成,该计算机程序可存储于一计算机可读存储介质。该计算机程序被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质,也可以为易失性的计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时使处理器执行如下步骤:
一种计算机程序产品,当其在计算机上运行时,使得计算机执行以上各实施例中所描述的所述K线数据检查方法的步骤。
所述计算机可读存储介质可以是前述设备的内部存储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述存储介质为实体的、非瞬时性的存储介质,例如可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储计算机程序的实体存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。