发明内容
为解决上述现有技术问题,本发明提供一种证券行情转发方法及系统、计算机可读存储介质及装置。
为了实现上述目的,本发明采用的技术方案是:
提供一种证券行情转发方法,其特征在于,包括以下步骤:
S1、接收交易所发出的逐笔行情;
S2、对逐笔行情进行过滤,提取出目标信息;
S3、将目标信息存储到存储器中;
S4、从存储器中提取需求信息。
优选的,所述逐笔行情具有逐笔成交行情与逐笔委托行情;
其中,所述逐笔成交行情为当前成交的实时行情,所述逐笔委托行情为买/卖方的委托行情;
所述目标信息具有成交信息与委托信息;
其中,所述成交信息具有成交价格、成交量、买方委托索引、卖方委托索引;
其中,所述委托信息具有买委托价、买委托量、卖委托价、卖委托量。
优选的,S3步骤中,
将目标信息的价格通过价位空间法存储到存储器中,所述价位空间法用于使价格与存储地址唯一对应;
价格P与存储地址f(p)对应的关系式为:
f(p)=[p/θ1]+mod(p,θ1)/θ2 (1)
其中,θ1为位宽压缩常量;
其中,θ2为归一化常量;
其中,[p/θ1]表示不超过p/θ1的最大整数;
其中,mod(p,θ1)表示p除以θ1的余数。
优选的,S4步骤中,
通过有效位联合求和法从存储器中提取需求信息;
其中,所述有效位联合求和法用于从存储器中读取价格并对其排序;
提取出的价格与档位有对应的映射关系。
优选的,对存储的每一个价格增加一个标识位,且满足,
标识位=1,表示该价格有效;
标识位=0,表示该价格无效;
标识位bi与标识位计数器c(i)一一对应,
c(i)=bi+b(i-1)+b(i-2)+…+b0 (2)
其中,i为0-7的整数。
一种证券行情转发系统,其特征在于,包括,
可执行所述的一种证券行情转发方法。
一种计算机可读存储介质,其特征在于,包括,
用于存储指定计算机程序,所述指定计算机程序的执行可实现所述的一种证券行情转发方法。
一种证券行情转发装置,其特征在于,包括,所述的一种证券行情转发方法;
所述的一种计算机可读存储介质;
具有逐笔行情过滤器、买/卖控制模块、档位收集器、存储器、输出控制模块、目标档位。
优选的,逐笔行情过滤器具有逐笔成交行情过滤器与逐笔委托行情过滤器;
其中,所述逐笔成交行情过滤器用于从行情包中提取成交信息;
其中,所述逐笔委托行情过滤器用于从行情包中提取委托信息信息。
优选的,买/卖控制模块用于将逐笔行情过滤器提取的价格进行压缩;
买/卖控制模块用价位空间法对价格进行压缩得到价格以及与之对应的存储地址;
存储器用于存储档位。
优选的,价格的整数部分用12bit表示,价格的小数部分用7bit表示;
对地址进行归一化操作使价格与存储地址一一对应,且价格与地址的变化是连续的。
优选的,档位收集器采用有效位联合求和法提取有效价格;
以买一价或者卖一价为起始地址,在存储器中提取有效价格;
寻址到涨停价的位置拼成目标档位,则输出目标档位,否则输出实际档位。
优选的,输出控制模块用于控制输出快照行情的间隔、快照行情的种类。
优选的,输出控制模块用于控制输出间隔时间内变化的档位行情。
本发明的有益效果体现在,提供一种证券行情转发方法及系统、计算机可读存储介质及装置。本发明能够把用户需求的信息实时发送给用户,可以达到实时快照行情。其中交易所下发的快照行情为每3秒一次,中间舍弃了很多信息,而本发明根据用户的需求能够实时的发送快照行情,提高了用户的体验感。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-图5所示,本发明提供的具体实施例如下:
实施例1:
一种证券行情转发方法,其特征在于,包括以下步骤:
S1、接收交易所发出的逐笔行情;
S2、对逐笔行情进行过滤,提取出目标信息;
S3、将目标信息存储到存储器中;
S4、;从存储器中提取需求信息。
所述逐笔行情具有逐笔成交行情与逐笔委托行情;
其中,所述逐笔成交行情为当前成交的实时行情,所述逐笔委托行情为买/卖方的委托行情;
所述目标信息具有成交信息与委托信息;
其中,所述成交信息具有成交价格、成交量、买方委托索引、卖方委托索引;如果是撤单,成交信息包括买撤单量,买撤单序列号,卖撤单量,卖撤单序列号。
其中,所述委托信息具有买委托价、买委托量、卖委托价、卖委托量。
证券行情数据是由交易所有偿提供的,一般是给券商、行情分析软件供应商等。交易所下发证券行情主要包括逐笔成交行情、逐笔委托行情与快照行情,其中逐笔成交行情与逐笔委托行情是实时发送的,由于逐笔行情信息量很大,对传输带宽要求很高,在这种情况下接收端有极大的概率出现数据丢失,对于用户来说,数据丢失是非常致命的,用户根据接收的行情信息分析、判断、做出下一步动作,比如买进、卖出等动作,如果用户获取的信息有丢失,丢失的信息很大概率是用户关注的信息,当用户关注的信息有缺失,非常容易对用户的下一步动作产生影响,从而影响用户最后的盈亏。
而且交易所发出的行情中有部分是对用户不关心的数据,如果按照逐笔行情发送,受带宽的影响用户接收到的信息有缺失,而且接收到很多影响用户的观看、分析的冗余信息,带给用户的体验感非常不好。按照交易所快照行情每3s发送一次,用户接收的行情缺失了很多信息,证券行情瞬息万变,对于用户而言,行情的变动非常有参考价值,但是交易所的快照行情并没有完全体现行情的真实变化情况,用户也不能掌握行情的整体信息,从而做出的判断也存在更大的风险。
在本实施例中,如图1所示,提出一种证券行情转发方法,其特征在于,包括以下步骤:S1、接收交易所发出的逐笔行情;S2、对逐笔行情进行过滤,提取出目标信息;S3、将目标信息存储到存储器中;S4、从存储器中提取需求信息。本发明将交易所下发的逐笔行情进行过滤,减小需要传输的信息量,然后将目标信息存储到存储器中,通过从存储器中提取需求信息。需求信息可以根据用户的需求更改,本发明能够把用户需求的信息实时发送给用户,可以达到实时快照行情。其中交易所下发的快照行情为每3秒一次,中间舍弃了很多信息,而本发明根据用户的需求能够实时的发送快照行情,提高了用户的体验感。
实施例2:
S3步骤中,
将目标信息的价格通过价位空间法存储到存储器中,所述价位空间法用于使价格与存储地址唯一对应;
价格P与存储地址f(p)对应的关系式为:
f(p)=[p/θ1]+mod(p,θ1)/θ2 (1)
其中,θ1为位宽压缩常量;
其中,θ2为归一化常量;
其中,[p/θ1]表示不超过p/θ1的最大整数;
其中,mod(p,θ1)表示p除以θ1的余数。
在本实施例中,将目标信息的价格通过价位空间法存储到存储器中,所述价位空间法用于使价格与存储地址唯一对应。无需对价位进行排序,通过价位变换,和存储器的空间建立映射关系,从而实现价格存储和排序的功能。既可以把价格进行压缩,可以降低对存储价格的存储器的要求,而且能够实现价格与存储地址唯一对应,提高了后期读取价格的效率。
实施例3:
S4步骤中,
通过有效位联合求和法从存储器中提取需求信息;
其中,所述有效位联合求和法用于从存储器中读取价格并对其排序;
提取出的价格与档位有对应的映射关系。
通过有效位联合求和法从存储器中把价位提取出来并排序,
对存储的每一个价格增加一个标识位,且满足,
标识位=1,表示该价格有效;
标识位=0,表示该价格无效;
标识位bi与标识位计数器c(i)一一对应,
c(i)=bi+b(i-1)+b(i-2)+…+b0 (2)
其中,i为0-7的整数。
在本实施例中,通过有效位联合求和法从存储器中提取需求信息,在每一个价位存储的时候,增加一个标识位,表示该价位是否有效,如果标识位等于1,表示该价位有效,如果标识位等于0,表示该价位无效。每次从存储器中最多读8个档位,标识位有8个,用bi标识,i取值0~7。每个标识位,有一个且只有一个标识位计数器c(i)与之对应,两者联合起来,提取出的价格与档位有对应的映射关系,唯一确定档位位置。有效位联合求和法能从存储器中把价格提取出来并排序。当读取价格时,通过c(i)可以快速筛选有效价位,然后根据c(i)读取有效价位,本算法可以大大提高需求信息的提取效率。从而减小转发的延时时间,在一定程度上能够缓解传输的延时性。
实施例4:
一种证券行情转发系统,其特征在于,包括,
可执行所述的一种证券行情转发方法。
一种计算机可读存储介质,其特征在于,包括,
用于存储指定计算机程序,所述指定计算机程序的执行可实现权所述的一种证券行情转发方法。
一种证券行情转发装置,其特征在于,包括,
所述的一种证券行情转发方法;
所述的一种计算机可读存储介质;
具有逐笔行情过滤器、买/卖控制模块、档位收集器、存储器、输出控制模块、目标档位。
软件转发是通过终端来处理,多次模拟软件处理两个任务,输出的结果有很大的变化范围,软件处理的结果受多方面影响,随机性较大,随着任务量的增加,输出结果的抖动更大。
在本实施例中,如图2所示,本发明采用FPGA芯片技术,通过硬件编程的方式来实现订单簿的合成与提取。FPGA的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,运算资源,查找表等底层硬件单元。相对于CPU的毫秒级延时,FPGA能够并行处理多路数据,又因为数据处理是寄存器流水,所以FPGA端到端数据延时是纳秒级,使用FPGA芯片技术可以达到数量级的减小延时。
实施例5:
逐笔行情过滤器具有逐笔成交行情过滤器与逐笔委托行情过滤器;
其中,所述逐笔成交行情过滤器用于从行情包中提取成交信息;
其中,所述逐笔委托行情过滤器用于从行情包中提取委托信息信息。
买/卖控制模块用于将逐笔行情过滤器提取的价格进行压缩;
买/卖控制模块用价位空间法对价格进行压缩得到价格以及与之对应的存储地址;
存储器用于存储档位。
在本实施例中,FPGA不擅长处理多达几百上千个节点的红黑树算法,本发明根据FPGA硬件特性,以及订单簿特点,采用价位空间法存储行情价格。该算法的特点是,无需对价位进行排序,通过价位变换,使价格和存储器的空间建立映射关系,从而实现价格存储和排序的功能。存储器地址址f(p)和价格P的映射关系可以用下面的公式表达:f(p)=[p/θ1]+(p modθ1)/θ2。其中,θ1为位宽压缩常量;其中,θ2为归一化常量。一个价格对应一个存储地址,使得价格在存储空间上不重叠。存储器用于存储有位,有效档位的标识位为1,其中有委托的价格为有效档位,为读取档位时过滤无效档位提供条件,从而实现证券行情的高效存储与转发。
在此需要说明的是,存储器为FPGA片内同步动态随机存取内存(SDRAM),FPGA内的SDRAM读写速度比DDR的读写速度更快,如果资源不够用时,存储器除了为SDRAM,可以增加外部DDR存储器。
实施例6:
价格的整数部分用12bit表示,价格的小数部分用7bit表示;
对地址进行归一化操作使价格与存储地址一一对应,且价格与地址的变化是连续的。
在本实施例中,如图3所示,价位空间算法是在买/卖控制模块中实现的。从行情中提取的价格是64bit位宽,但是在FPGA内部,不存在如此大地址位宽的存储器,但是FPGA的低延时性可以缓解CPU的高延时的问题,为此对价格进的位宽进行压缩是非常有意义的,以便使压缩后的价格能够存储在FPGA的存储器中。在本算法中,把价格分成整数部分和小数部分。根据现有行情价格区间,没有大于3000元每股的股票,设置12bit能表示所有可能的行情价格的整数,设置7bit表示小数,这样可以用19bit来表示价格就。价格的小数部分变化区间是0.01~0.99,用7bit表示是有冗余的,当读取价格的小数部分时会读取到空地址,增加多余的耗时。在本实施例中,对地址进行归一化操作,使得价格和地址是连续变化的,中间不会有空地址,提高地址的利用率。同时,地址进行归一化操作后还可以提高地址检索速度。把处理后的价格,当作存储器的地址,把价格和行情的数量当作数据,存储在存储器中。
实施例7:
档位收集器采用有效位联合求和法提取有效价格;
以买一价或者卖一价为起始地址,在存储器中提取有效价格;
寻址到涨停价的位置拼成目标档位,则输出目标档位,否则输出实际档位。
在本实施例中,如图4所示,目标档位可以设置多种,目标档位可为一档、五档、十档、二十档等。以深交所level2为例,快照档位,买、卖各十档。根据价位空间算法,档位在存储器中可能是跳跃存在的,比如买一价格是10.01元,买二价格可能是9.98元,不可能连续的取得所需要的档位。采用有效位联合求和法可以从存储器中,提取出买/卖十档行情。例如,当买一确定后,以买一价作为起始地址,不断的去存储器中,取出有效价位,直到拼成10档,如果已经寻址到涨停价的位置,还没找到十档,则查找结束,有几档输出几档。
实施例8:
输出控制模块用于控制输出快照行情的间隔、快照行情的种类。
在本实施例中,输出控制模块用来控制输出的快照间隔,快照的种类。其中,快照的种类包括股票、债券、基金等,其中,所述快照行情的间隔为20ms-500ms为优选方案之一。快照输出格式每家券商会有差异,总的说来,输出的数据量较大,如果所有证券代码,都按照逐笔行情的频率发送,接收端可能会数据丢失。所以需要适当的流控。例如控制输出频率,限制20ms发送一次行情。此外,根据客户需要,可以对快照进行裁剪,只输出客户需要的证券代码,不需要的,则不输出,这样可以大幅缩短延时。
实施例9:
输出控制模块用于控制输出间隔时间内变化的档位行情。
在本实施例中,如图5所述输出控制模块用于控制输出间隔时间内变化的档位行情。以增量变化的形式传输,例如某一档行情发送变化,单独传输变化的档位行情给用户,其它没有变化的行情则不传输,使得传输的数据量变小,用户接收的压力会更小。
在本发明的实施例的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“坚直”、“水平”、“中心”、“顶”、“底”、“顶部”、“底部”、“内”、“外”、“内侧”、“外侧”等指示的方位或位置关系。
在本发明的实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“组装”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的实施例的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
在本发明的实施例的描述中,需要理解的是,“-”和“~”表示的是两个数值之同的范围,并且该范围包括端点。例如:“A-B”表示大于或等于A,且小于或等于B的范围。“A~B”表示大于或等于A,且小于或等于B的范围。
在本发明的实施例的描述中,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。