本发明涉及数据传输,尤其涉及一种金融行情合约数据接收方法及装置。
背景技术:
1、金融行情合约(financial market contract)是金融市场中的一种金融工具,用于在特定时间和条件下进行金融资产的买卖、交易或结算。在交易时间段内,每隔一段时间(如200ms),交易所会将这段时间内的证券、期货的交易信息以组播的形式发送出来,也即按照设定次序和条数进行发送。如果这段时间某些期货合约在现实中未发生交易,则不会发送该合约的交易信息。在极速交易场景下,受现实中交易情况的影响,交易所发送的合约信息及数量是不确定的,因此对于交易策略模块的并行化处理带来了挑战。同时用户在接收过程中,大量的组播数据包含了用户不需要的合约内容,在接收和处理的过程中,会拖慢交易的速度。
技术实现思路
1、鉴于此,本发明实施例提供了一种金融行情合约数据接收方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有技术在金融行情合约数据传输过程中无法满足急速交易和并行化处理需求的问题。
2、一方面,本发明提供一种金融行情合约数据接收方法,所述方法用于用户端的解析模块上执行,该方法包括以下步骤:
3、基于时间先后顺序接收金融行情合约,所述金融行情合约至少包括时间戳、合约id以及合约数据;其中,在金融机构生成所述金融行情合约的过程中,每个时间戳所对应批次的所述金融行情合约是根据业务需求按照预设次序和设定条数生成的;
4、对于接收到的所述金融行情合约,核查每个时间戳对应批次的合约id,按照所述预设次序和设定条数对比查找每个时间戳对应批次中缺失的金融行情合约,并采用指定数据补齐所述缺失的金融行情合约,以并行处理执行决策;
5、以及,根据预设的金融行情合约订阅模式,将补齐后的金融行情合约按照用户的订阅需求发送至用户。
6、在一些实施例中,核查每个时间戳对应批次的合约id,按照所述预设次序和设定条数对比查找每个时间戳对应批次中缺失的金融行情合约,并采用指定数据补齐所述缺失的金融行情合约,包括:
7、初始化缓存合约时间戳为0,初始化缓存合约id为0;
8、接收当前所述金融行情合约并按照用户的订阅需求发送至用户;
9、当接收到的当前所述金融行情合约的时间戳晚于所述缓存合约时间戳时,核查所述缓存合约时间戳对应批次的所述金融行情合约是否达到所述设定条数,未达到设定条数时,按照所述预设次序和所述设定条数,对所述缓存合约时间戳对应批次中的第一类缺失金融行情合约进行补齐并按照用户的订阅需求发送至用户,所述第一类缺失金融行情合约的合约数据标记为0值;并将缓存合约id重新置为0;
10、当接收到的当前所述金融行情合约的时间戳等于所述缓存合约时间戳时,且当前所述金融行情合约的合约id大于所述缓存合约id时,判断当前所述金融行情合约的合约id与所述缓存合约id是否连续,连续时,更新所述缓存合约id为当前所述金融行情合约的合约id;不连续时,补齐所述缓存合约id至当前所述金融行情合约的合约id之间的第二类缺失金融行情合约,所述第二类缺失金融行情合约的合约数据标记为0值,并将补齐的所述第二类缺失金融行情合约按照用户的订阅需求发送至用户。
11、在一些实施例中,核查每个时间戳对应批次的合约id,按照所述预设次序和设定条数对比查找每个时间戳对应批次中缺失的金融行情合约,并采用指定数据补齐所述缺失的金融行情合约,包括:
12、判断是否接收到新的所述金融行情合约,当接收到当前所述金融行情合约时,初始化缓存合约时间戳为0,初始化缓存合约id为0;
13、当接收到的当前所述金融行情合约的时间戳晚于所述缓存合约时间戳时,将所述缓存合约时间戳更新为当前所述金融行情合约的时间戳,将初始化缓存合约id重新置为0;判断当前所述金融行情合约的合约id是否大于缓存合约id,若是则补齐所述缓存合约id至当前所述金融行情合约的合约id之间的第三缺失金融行情合约并按照用户的订阅需求发送至用户,所述第三类缺失金融行情合约的合约数据标记为0值,若否则将当前所述金融行情合约按照用户的订阅需求发送至用户;
14、当接收到的当前所述金融行情合约的时间戳等于所述缓存合约时间戳时,判断当前所述金融行情合约的合约id是否大于缓存合约id,若是则补齐所述缓存合约id至当前所述金融行情合约的合约id之间的第四缺失金融行情合约并按照用户的订阅需求发送至用户,所述第四类缺失金融行情合约的合约数据标记为0值,若否则将当前所述金融行情合约按照用户的订阅需求发送至用户。
15、在一些实施例中,所述方法在初始化缓存合约时间戳以及初始化缓存合约id之前,还包括:
16、判断是否接收到新的所述金融行情合约,当未接收到新的所述金融行情合约时,保持空载待命状态,所述空载待命状态包括:
17、判断所述缓存合约时间戳是否初始化,若已完成初始化则获取当前硬件时间戳,在所述当前硬件时间戳大于缓存硬件时间戳设定时长,且缓存的合约列表中合约id未达到所述设定条数时,补齐所述缓存硬件时间戳剩余未输出的空载合约,所述空载合约的合约数据标记为0值,更新缓存硬件时间戳为当前硬件时间戳。
18、在一些实施例中,所述方法还包括:
19、判断所述缓存合约时间戳是否初始化后,若未完成初始化,则重新判断是否接收到新的所述金融行情合约;
20、以及,在所述当前硬件时间戳小于等于缓存硬件时间戳,或缓存的合约列表中合约id达到所述设定条数时,重新判断是否接收到新的所述金融行情合约。
21、在一些实施例中,根据预设的金融行情合约订阅模式,将补齐后的金融行情合约按照用户的订阅需求发送至用户,包括:
22、获取所述金融行情合约解析后的待派发合约id;
23、根据用户预设的订阅列表过滤所述待派发合约id,将处于所述订阅列表中的待派发合约id对应的金融行情合约输出,其余舍弃。
24、在一些实施例中,所述方法还包括:接收用户发送的订阅变更请求,根据所述订阅变更请求更新所述订阅列表。
25、另一方面,本发明还提供一种金融行情合约数据接收装置,包括:
26、接收模块,用于接收数据源发布的金融行情合约;
27、解析模块,用于执行上述的金融行情合约数据接收方法;
28、输出模块,用于将所述解析模块的输出通过pcie协议发送至所述用户的处理器端。
29、在一些实施例中,所述解析模块采用现场可编程门阵列设备。
30、另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述方法的步骤。
31、本发明的有益效果至少是:
32、本发明所述金融行情合约数据接收方法及装置,针对现实交易的不确定性,通过在接收金融行情合约的过程中,设置和执行完整的合约补齐方案,利用插补数据的形式保证接收到的金融行情合约在次序和设定条数上的完整性,使得后续决策过程能够始终按照统一的数据设定条数并行处理,保证了急速交易的实现。同时,在对金融行情合约进行派发时,基于订阅机制按照用户的需求筛选数据,减少后续应用过程中对数据的无效处理,提升了处理速度和执行效率。
33、本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
34、本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。