一种适用于证券交易系统的逐笔集合竞价行情生成方法技术方案

技术编号:32334055 阅读:25 留言:0更新日期:2022-02-16 18:41
本发明专利技术涉及证券交易系统技术领域,具体来说是一种适用于证券交易系统的逐笔集合竞价行情生成方法,方法步骤具体如下:订单包括一个买单链、一个卖单链,这两条链可离散地跨越整个可报单价格区间,两条链如果在价格区间上有重叠部分,则可产生虚拟成交行情,两条链的重叠价格和相等的重叠量所覆盖的订单集合,分别用虚拟成交买单链和虚拟成交卖单链来跟踪记录所涉订单,新方案给每个订单结构内部增加了虚拟剩余成交量字段,这样我们可以实时记录每个订单虚拟撮合成交后的将剩余的成交量。每个订单虚拟撮合成交后的将剩余的成交量。每个订单虚拟撮合成交后的将剩余的成交量。

【技术实现步骤摘要】
一种适用于证券交易系统的逐笔集合竞价行情生成方法


[0001]本专利技术涉及证券交易系统
,具体来说是一种适用于证券交易系统的逐笔集合竞价行情生成方法。

技术介绍

[0002]根据《上海证券交易所交易规则(2018年修订)》,证券竞价交易采用集合竞价和连续竞价两种方式。集合竞价是指在规定时间内接受的买卖申报一次性集中撮合的竞价方式。连续竞价是指对买卖申报逐笔连续撮合的竞价方式。
[0003]集合竞价时,成交价格的确定原则为:1.可实现最大成交量的价格;2.高于该价格的买入申报与低于该价格的卖出申报全部成交的价格;3.与该价格相同的买方或卖方至少有一方全部成交的价格。
[0004]两个以上申报价格符合上述条件的,使未成交量最小的申报价格为成交价格;仍有两个以上使未成交量最小的申报价格符合上述条件的,其中间价为成交价格。集合竞价的所有交易以同一价格成交。
[0005]每个交易日9:15至9:25开盘集合竞价期间、14:57至15:00收盘集合竞价期间,即时行情内容包括:证券代码、证券简称、前收盘价格、集合竞价虚拟参考价格、虚拟匹配量和虚拟未匹配量。
[0006]集合竞价是证券交易的方式之一,一般用于确定一个交易品种当天的开盘价、收盘价。在集合竞价阶段,交易所需要根据所有收到的订单申报和撤单申报进行统计,计算出一个成交价格(称作虚拟成交价),以及该价格上的成交数量(称作虚拟成交量),通过行情的方式披露给所有市场参与者,在下文中我们统称“虚拟成交价、虚拟成交量、虚拟未成交买单量、虚拟未成交卖单量”为集合竞价行情。
[0007]由于需要对所有已经申报进系统的订单进行统计,在一个交易品种上,集合竞价期间累计的订单数量会达到数十万笔,交易所无法逐笔地计算出虚拟成交价和虚拟成交量,无法及时地对市场披露行情信息,导致价格发现效率低下,影响市场参与者做出投资决策的正确率。上述问题的原因在于上海证券交易所现有交易系统的集合竞价算法的算法复杂度大,满足不了逐笔披露行情的要求。

技术实现思路

[0008]本专利技术的目的在于解决现有技术的不足,提供一种适用于证券交易系统的逐笔集合竞价行情生成方法,其特征在于方法步骤具体如下:
[0009]S1.订单包括一个买单链、一个卖单链,这两条链可离散地跨越整个可报单价格区间,两条链如果在价格区间上有重叠部分,则可产生虚拟成交行情,两条链的重叠价格和相等的重叠量所覆盖的订单集合,分别用虚拟成交买单链和虚拟成交卖单链来跟踪记录所涉订单;
[0010]S2.每次有订单插入或删除时,不仅要维护买单链和卖单链,还需要根据订单是否
在虚拟成交重叠区间,来维护虚拟成交买单链和虚拟成交卖单链;新增这两条虚拟成交的链并不需要建立额外的数据结构,仅需保存链首订单指针,并且在每个订单中增加一个字段用来保存虚拟剩余下单量,它和订单的原下单量、虚拟成交量之间存在如下关系:原下单量=虚拟剩余下单量+虚拟成交量;
[0011]S3.如果新插订单或被删订单正好在虚拟成交链中,对链首的订单执行收缩和扩充操作,去维持两条虚拟成交链属性,保持虚拟成交链包含虚拟连续竞价所会成交掉的所有订单。
[0012]本专利技术还具有如下优选的技术方案:
[0013](1)方法中插入新订单时具体如下:
[0014]1.当插入一个订单时,我们将此订单记作newOrder。将它的买卖方向记作leftSide,将leftSide的反方向记作oppoSide;
[0015]2.根据oppoSide获得该方向上价格最优的订单,记作oppoBest,即买单里价格最高插入时间最早的,或卖单里价格最低插入时间最早的;
[0016]3.根据oppoSide获取这个方向虚拟成交链上的链首订单,记作virtualWorst[oppoSide],保存到临时指针oppoBorder:oppoBorder=virtualWorst[oppoSide];
[0017]4.根据leftSide获取这个方向虚拟成交链上的链首订单,记作virtualWorst[leftSide],保存到临时指针border:border=virtualWorst[leftSide];
[0018]5.如果newOrder的价格比oppoBorder的价格差,说明新订单和对手方订单价格无重叠,无需后续处理,直接退出插入新订单的逻辑;
[0019]5.1.如果border为空指针,说明是第一次产生价格重叠,将border指向newOrder,即border=newOrder;
[0020]5.2.如果border不为空指针,说明已经有虚拟成交链,判断newOrder在订单链上的下一个相邻订单,记作prevOrder是否为空,如果prevOrder不为空,并prevOrder的虚拟剩余下单量大于0,表明对手订单链上已无订单可成交,直接退出插入新订单的逻辑;如果prevOrder指向border所指相同的订单,则说明newOrder是新的该方向上最优订单,需要更新border,将border指向newOrder,即border=newOrder;
[0021]6.至此,newOrder的下单量代表着导致两条虚拟成交链的失衡量,记作unBalanceQuantity,接下来通过收缩和扩充操作来将unBalanceQuantity减为0,收缩操作为shrink,扩充操作为extend;
[0022]6.1.如果unBalanceQuantity等于0,则直接退出插入新订单的逻辑;
[0023]6.2.如果oppoBorder为空、或border的价格比oppoBorder的价格差,执行一次shrink调用,将两个返回值赋给变量balance和border:balance,border=shrink(unBalanceQuantity,leftSide,border);
[0024]6.2.1.并将shrink返回的balance从unBalanceQuantity中减去:unBalanceQuantity=unBalanceQuantity

balance,跳转回6.1继续执行;
[0025]6.3.执行一次extend调用,将两个返回值赋给变量balance和oppoBorder:balance,oppoBorder=extend(unBalanceQuantity,oppoSide,oppoBorder);
[0026]6.4.并将extend返回的balance从unBalanceQuantity中减去:unBalanceQuantity=unBalanceQuantity

balance,跳转回6.1继续执行。
[0027](2)方法中shrink(unBalanceQuantity,side,border)函数的逻辑:
[0028]1.原下单量为Quantity,虚拟剩余下单量为VLQu本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种适用于证券交易系统的逐笔集合竞价行情生成方法,其特征在于方法步骤具体如下:S1.订单包括一个买单链、一个卖单链,这两条链可离散地跨越整个可报单价格区间,两条链如果在价格区间上有重叠部分,则可产生虚拟成交行情,两条链的重叠价格和相等的重叠量所覆盖的订单集合,分别用虚拟成交买单链和虚拟成交卖单链来跟踪记录所涉订单;S2.每次有订单插入或删除时,不仅要维护买单链和卖单链,还需要根据订单是否在虚拟成交重叠区间,来维护虚拟成交买单链和虚拟成交卖单链;新增这两条虚拟成交的链并不需要建立额外的数据结构,仅需保存链首订单指针,并且在每个订单中增加一个字段用来保存虚拟剩余下单量,它和订单的原下单量、虚拟成交量之间存在如下关系:原下单量=虚拟剩余下单量+虚拟成交量;S3.如果新插订单或被删订单正好在虚拟成交链中,对链首的订单执行收缩和扩充操作,去维持两条虚拟成交链属性,保持虚拟成交链包含虚拟连续竞价所会成交掉的所有订单。2.如权利要求1所述的一种适用于证券交易系统的逐笔集合竞价行情生成方法,其特征在于所述方法中插入新订单时具体如下:A.当插入一个订单时,我们将此订单记作newOrder,将它的买卖方向记作leftSide,将leftSide的反方向记作oppoSide;B.根据oppoSide获得该方向上价格最优的订单,记作oppoBest,即买单里价格最高插入时间最早的,或卖单里价格最低插入时间最早的;C.根据oppoSide获取这个方向虚拟成交链上的链首订单,记作virtualWorst[oppoSide],保存到临时指针oppoBorder:oppoBorder=virtualWorst[oppoSide];D.根据leftSide获取这个方向虚拟成交链上的链首订单,记作virtualWorst[leftSide],保存到临时指针border:border=virtualWorst[leftSide];E.如果newOrder的价格比oppoBorder的价格差,说明新订单和对手方订单价格无重叠,无需后续处理,直接退出插入新订单的逻辑;E

1.如果border为空指针,说明是第一次产生价格重叠,将border指向newOrder,即border=newOrder;E

2.如果border不为空指针,说明已经有虚拟成交链,判断newOrder在订单链上的下一个相邻订单,记作prevOrder是否为空,如果prevOrder不为空,并prevOrder的虚拟剩余下单量大于0,表明对手订单链上已无订单可成交,直接退出插入新订单的逻辑;如果prevOrder指向border所指相同的订单,则说明newOrder是新的该方向上最优订单,需要更新border,将border指向newOrder,即border=newOrder;F.至此,newOrder的下单量代表着导致两条虚拟成交链的失衡量,记作unBalanceQuantity,接下来通过收缩和扩充操作来将unBalanceQuantity减为0,收缩操作为shrink,扩充操作为extend;F

1.如果unBalanceQuantity等于0,则直接退出插入新订单的逻辑;F

2.如果oppoBorder为空、或border的价格比oppoBorder的价格差,执行一次shrink调用,将两个返回值赋给变量balance和border:balance,border=shrink
(unBalanceQuantity,leftSide,border);F

2.1.并将shrink返回的balance从unBalanceQuantity中减去:unBalanceQuantity=unBalanceQuantity

balance,跳转回F

1继续执行;F

4.执行一次extend调用,将两个返回值赋给变量balance和oppoBorder:balance,oppoBorder=extend(unBalanceQuantity,oppoSide,oppoBorder);F

5.并将extend返回的balance从unBalanceQuantity中减去:unBalanceQuantity=unBalanceQuantity

balance,跳转回F

1继续执行。3.如权利要求2所述的一种适用于证券交易系统的逐笔集合竞价行情生成方法,其特征在于所述方法中shrink(unBalanceQuantity,side,border)函数的逻辑:A.原下单量为Quantity,虚拟剩余下单量为VLQuantity,通过border中的Quantity和VLQuantity,计算border所指订单已经产生的虚拟成交量,记作filled:filled=border.Quantity

border.VLQuantity;B

1.如果filled比unBalanceQuantity大,则设置此次操作的平衡量,记作balance,balance=unBalanceQuantityB

2.否则,设置此次操作的平衡量为filled:balance=filled;C.修改border的虚拟剩余成交量,跟踪其减少的虚拟成交量:border.VLQuantity=border.VLQ...

【专利技术属性】
技术研发人员:林琨蔡舒艺王泊
申请(专利权)人:上交所技术有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1