快速实现订单模拟撮合的方法、系统及装置与流程

xiaoxiao2月前  9


本发明涉及数据处理,尤其涉及一种快速实现订单模拟撮合的方法、系统及装置。


背景技术:

1、在现有的订单模拟撮合中,一般是通过历史逐笔行情作为基础数据,严格按照逐笔行情产生的先后顺序,对新交易订单、撤单、成交的逐笔行情按各自业务逻辑更新还原行情订单簿,进而在还原行情订单簿过程中接入用户策略订单,模拟用户策略订单与实时行情订单仿真撮合。

2、现有的做法中,会出现以下问题:

3、行情订单簿还原较慢:当进行某一个时间段的策略回测时(比如近一年的历史逐笔行情),由于历史逐笔行情的数据量非常大,因此在更新行情订单簿时,查找和定位逐笔行情涉及的订单在行情订单簿的具体位置时非常耗时;

4、由于撮合支持功能有限会导致回测与实际交易有较大偏差:竞价交易不同交易阶段、不同交易类型的撮合规则均不同,业务逻辑复杂,支持度不够;

5、采用内存数据库作为基础数据结构,会导致行情插入回放耗时较大,对行情回放量巨大且只包含简单索引的撮合场景不适用。


技术实现思路

1、本发明针对现有技术中的缺点,提供了一种快速实现订单模拟撮合的方法、系统及装置。

2、为了解决上述技术问题,本发明通过下述技术方案得以解决:

3、一种快速实现订单模拟撮合的方法,包括以下步骤:

4、基于逐笔交易订单产生的时间顺序,获取逐笔交易订单并解析,得到交易订单信息,其中,交易订单信息至少包括交易类型、交易成交方向、交易成交价格、交易编号及交易目标代码;

5、通过多线程模型定位相应的行情订单簿,并将逐笔交易订单信息存储于对应的行情订单簿中;

6、基于逐笔交易订单的交易类型匹配相应的还原逻辑,通过所述还原逻辑对行情订单簿进行更新以形成新行情订单簿;

7、获取待模拟撮合订单,对待模拟撮合订单的有效性进行判断,得到判断结果,其中,待模拟撮合订单信息包括交易目标代码、交易成交方向、交易类型、交易目标数量及交易目标价格;

8、若待模拟撮合订单为有效订单,则根据交易目标代码定位新行情订单簿,根据更新时间确定待模拟撮合订单涉及的交易阶段,根据交易类型在所述交易阶段通过对应的撮合方式进行模拟撮合,得到撮合结果。

9、作为一种可实施方式,通过多线程模型定位相应的行情订单簿,包括以下步骤:

10、所述多线程模型包括一级索引、二级索引及行情订单簿;

11、所述一级索引为线程池索引,线程池索引的索引值为处理线程,所述处理线程为通过对交易目标代码的数据取模得到的结果;

12、所述二级索引为订单簿索引,订单簿索引的索引值为哈希值,所述哈希值为对交易目标代码的数据进行哈希处理得到的结果;

13、对交易目标代码的数据取模,初次匹配相应的处理线程,对交易目标代码进行哈希,通过哈希值匹配对应的行情订单簿。

14、作为一种可实施方式,所述行情订单簿设有至少三个维度的存储结构;

15、存储结构的第一维度用于存储对行情数据按交易成交方向进行分类的数据集;

16、存储结构的第二维度用于存储将第一维度的数据集按交易价格档位进行分类的数据集;

17、存储结构的第三维度用于存储将第二维度的数据集的按交易编号唯一的委托队列数据。

18、作为一种可实施方式,所述交易订单信息中的交易类型包括第一委托类型和第一成交类型;

19、所述第一委托类型包括新交易订单及第一撤销订单;第一成交类型包括第一成交方向订单、第二成交方向订单及第三成交方向订单;

20、则所述对行情订单簿进行更新,包括以下步骤:

21、当为新交易订单时,根据交易目标代码、交易成交方向匹配相应的行情订单簿交易成交方向的行情数据,进而根据交易目标价格匹配对应的交易价格档位,获取相应档位下的委托队列,在所述委托队列最后插入所述新交易订单信息;

22、当为第一撤销订单时,根据交易目标代码、交易成交方向匹配相应的行情订单簿交易成交方向的行情数据,进而根据交易目标价格匹配对应的交易价格档位,获取相应档位下的委托队列,并基于二分法在所述委托队列中查找第一撤销订单的交易编号并从队列中删除;

23、当为第一成交方向订单时,根据交易目标代码定位相应的行情订单簿,根据交易成交价格在卖出行情数据中查找对应交易价格档位,获取相应档位下的委托队列,所述委托队列的第一笔交易订单即为当前交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除;

24、当为第二成交方向订单时,根据交易目标代码定位相应的行情订单簿,根据交易成交价格在买入行情数据中查找对应交易价格档位,获取相应档位下的委托队列,所述委托队列的第一笔交易订单即为当前交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除;

25、当为第三成交方向订单时,对第三成交方向订单的成交双方订单进行判断,若为第一成交方向订单,则根据交易目标代码定位相应的行情订单簿,根据交易成交价格在买入行情数据中查找对应交易价格档位,获取相应档位下的委托队列,根据交易编号判断所述委托队列的第一笔交易订单是否为当前交易订单,若否,则继续取其他档位价格档位下的委托队列的第一笔交易订单进行判断,直至获取到交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除;若为第二成交方向订单时,根据交易目标代码定位相应的行情订单簿,根据交易成交价格在卖出行情数据中查找对应交易价格档位,获取相应档位下的委托队列,根据交易编号判断所述委托队列的第一笔交易订单是否为当前交易订单,若否,则继续取其他档位价格档位下的委托队列的第一笔交易订单进行判断,直至获取到交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除。

26、作为一种可实施方式,所述交易订单信息中的交易类型还包括第二委托类型及第二成交类型,所述第二委托类型包括限价交易订单、最优交易订单及市场价格交易订单;所述第二成交类型包括成交订单及第二撤销订单;

27、则所述对行情订单簿进行更新,包括以下步骤:

28、当为限价交易订单时,根据交易目标代码、交易成交方向定位行情订单簿交易成交方向的行情数据,进而根据交易目标价格匹配对应交易价格档位,获取相应档位下的委托队列,在所述委托队列最后插入当前限价交易订单;

29、当为最优交易订单时,根据交易目标代码、交易成交方向定位行情订单簿交易成交方向的行情数据,获取相应行情数据中最优交易价格,将当前交易订单转换为以最优交易价格为交易目标价格的限价交易订单,基于限价交易订单对应交易价格档位,获取相应档位下的委托队列,在所述委托队列最后插入相应的当前最优交易订单;

30、当为市场价格交易订单时,根据交易目标代码、交易成交方向定位对应行情订单簿交易成交方向的行情数据,在相应行情数据的市场价格档位,获取相应档位下的委托队列,在所述委托队列中插入当前市场价格交易订单;

31、当为成交订单时,对成交订单的成交双方订单进行判断,若为第一成交订单,则根据交易目标代码定位相应的行情订单簿,在买入行情数据的市场价格档位下获取委托队列,根据交易编号匹配市场价格交易订单,若匹配不成功则根据交易成交价格在买入行情数据中查找对应交易价格档位,获取相应档位下的委托队列,根据交易编号判断所述委托队列的第一笔交易订单是否为当前交易订单,若否,则继续取其他档位价格档位下的委托队列的第一笔交易订单进行判断,直至获取到交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除;若为第二成交订单时,根据交易目标代码定位相应的行情订单簿,在卖出行情数据的市场价格档位下获取委托队列,根据交易编号匹配市场价格交易订单,若匹配不成功则根据交易成交价格在卖出行情数据中查找对应交易价格档位,获取相应档位下的委托队列,根据交易编号判断所述委托队列的第一笔交易订单是否为当前交易订单,若否,则继续取其他档位价格档位下的委托队列的第一笔交易订单进行判断,直至获取到交易订单,若订单剩余数量减去当前交易订单成交数量大于0,则更新当前交易订单的剩余数量,若全部成交则将当前交易订单从订单队列中删除;

32、当为第二撤销订单时,根据交易目标代码、交易成交方向定位对应行情订单簿交易成交方向的行情数据,获取市场价格交易档位,在该档位下的委托队列根据交易编号匹配市场价格交易订单,若匹配成功则将当前交易订单从订单队列中删除;若匹配不成功则非市场价格交易订单,则根据交易目标价格匹配对应的对应交易价格档位,获取相应档位下的委托队列,并基于二分法在所述委托队列中查找第二撤销订单的交易编号并从队列中删除。

33、作为一种可实施方式,所述待模拟撮合订单交易阶段包括集合竞价阶段、连续竞价阶段,所述交易类型包括限价交易类型、第一部分成交类型、第二部分成交类型、第一转换类型、第二转换类型、全部操作类型及即时操作类型。

34、作为一种可实施方式,根据交易阶段、交易类型触发相应的撮合方式进而进行模拟撮合,得到撮合结果,包括以下步骤:

35、当集合竞价阶段时,对待模拟撮合新交易订单不进行模拟撮合,对待模拟撮合限价交易订单按交易目标代码、交易成交方向定位待模拟撮合挂单订单簿交易成交方向的挂单数据,进而根据交易目标价格匹配对应价格档位,获取相应档位下的挂单队列,在挂单队列最后插入待模拟撮合挂单,待集合竞价成交订单触发待模拟撮合挂单订单簿与行情订单簿模拟撮合;

36、当为连续竞价阶段时,待模拟撮合新交易订单与行情订单簿基于价格优先顺序、时间优先顺序进行模拟撮合,不同交易类型允许撮合的价格档位、剩余数量处理均不相同;

37、当为限价交易类型时,若待模拟撮合买入订单的交易目标价格不小于最新交易价格,则根据交易目标代码定位行情订单簿,获取卖出行情数据,进而根据最新交易价格匹配对应价格档位,获取相应档位下的委托队列,遍历所述委托队列,与当前限价交易订单进行模拟撮合;若本价格档位的行情订单全部进行模拟撮合,限价交易订单未完全成交,则继续取相邻档价格档位下的委托队列进行模拟撮合,直至买入交易目标价格小于卖出交易价格或交易目标数量全部成交;若为待模拟撮合卖出交易订单,若卖出订单的交易目标价格不大于最新交易价格,则根据交易目标代码定位行情订单簿,获取买入行情数据,进而根据最新交易价格匹配对应价格档位,获取相应档位下的委托队列,遍历所述委托队列,与当前限价交易订单进行模拟撮合;若本价格档位的行情订单全部进行模拟撮合,限价交易订单未完全成交,则继续取相邻档价格档位下的委托队列进行模拟撮合,直至卖出交易目标价格大于买入交易价格或交易目标数量全部成交;

38、当为第一部分成交类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取对手方行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,遍历所述委托队列,与市场价格交易订单模拟撮合,若交易订单未完全成交,则继续取相邻档价格档位下的委托队列进行模拟撮合,直至交易价格合理或交易目标数量全部成交,若交易目标数量未全部成交,则剩余数量按自动撤销处理;

39、当为第二部分成交类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取对手方行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,遍历所述委托队列,与市场价格交易订单模拟撮合,若交易订单未完全成交,则继续取相邻档价格档位下的委托队列进行模拟撮合,直至交易价格合理或交易目标数量全部成交,若交易目标数量未全部成交,则剩余数量以最近撮合成交价为交易目标价格转为限价交易订单;

40、当为第一转换类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,若委托队列无订单则继续取相邻档价格档位下的委托队列,直至委托队列中存在订单记录,以当前价格档位的交易价格为交易目标价格转为限价交易订单;

41、当为第二转换类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取对手方行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,若委托队列无订单则继续取相邻档价格档位下的委托队列,直至委托队列中存在订单记录,遍历所述委托队列与市场价格交易订单模拟撮合,若交易订单未完全成交,则剩余数量以最近撮合成交价为交易目标价格转为限价交易订单;

42、当为全部操作类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取对手方行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,遍历所述委托队列,判断市场价格交易订单是否能被全部撮合成交,若未全部成交则继续取次一档价格档位下的委托队列,判断未全部成交部分能否被全部撮合成交,直至价格档位取至合理价格档位或被全部撮合成交,若判断能被全部撮合成交,则按以上逻辑顺序依次撮合,否则本订单自动撤销;

43、当为即时操作类型时,根据交易目标代码定位行情订单簿,根据交易成交方向获取对手方行情数据,进而根据最新交易价格匹配对应价格档位,获取相应价格档位下的委托队列,遍历所述委托队列,与市场价格交易订单模拟撮合,若未全部成交则继续取相邻档价格档位下的委托队列进行模拟撮合,直至价格档位取至合理价格档位或被全部撮合成交,若市场价格交易订单有剩余数量,则剩余数量以最近撮合成交价为交易目标价格转为限价交易订单。

44、作为一种可实施方式,所述待模拟撮合订单为新交易订单时,包括以下步骤:

45、新交易订单的信息至少包括:交易编号、交易目标代码、交易成交方向、交易类型、交易目标数量、交易目标价格;

46、通过交易目标代码定位相应的行情订单簿,通过交易成交方向定位对手方行情数据;

47、对行情数据通过价格优先顺序、时间优先顺序与新交易订单进行模拟撮合;

48、若限价交易订单满足预设条件则撮合成交;本方最优交易订单取本方行情数据最优价格档位交易价格为交易目标价格转为限价交易订单;市场价格交易订单根据具体交易订单类型限制允许撮合价格档位、剩余数量处理方式;

49、若模拟撮合后还存在剩余数量,则将剩余数量的新交易订单插入待模拟撮合挂单订单簿,其中,未自动撤销的市场价格交易订单按具体交易类型确定挂单价格;对无成交的挂单,记录行情订单簿交易成交方向的行情数据中,以挂单价格匹配价格档位下的委托队列的最后一笔交易编号,用于挂单撮合时统计相同价格档位上优于本挂单的行情数量。

50、作为一种可实施方式,当待模拟撮合订单为挂单交易订单时,包括以下步骤:

51、挂单交易订单的信息包括交易编号、交易目标代码、交易成交方向、交易目标价格、剩余数量、行情交易编号;

52、根据逐笔交易订单的交易目标代码定位相应的待模拟撮合挂单订单簿,通过逐笔交易订单的交易成交方向定位对手方挂单数据;

53、对挂单数据通过价格优先、时间优先的顺序与逐笔交易订单进行模拟撮合,具体为:本笔逐笔交易订单可撮合数量 = 逐笔交易订单数量-优于待模拟撮合挂单的行情数量,当本笔行情可撮合数量大于0时,进行模拟撮合,其中,优于待模拟撮合挂单的行情数量,包括价格优于本待模拟撮合挂单的所有行情数量、本价格档位上时间优于本待模拟撮合挂单的所有行情数量。

54、一种快速实现订单模拟撮合的系统,包括订单获取模块、定位存储模块、匹配更新模块、获取判断模块及确定撮合模块;

55、所述订单获取模块,基于逐笔交易订单产生的时间顺序,获取逐笔交易订单并解析,得到交易订单信息,其中,交易订单信息至少包括交易类型、交易成交方向、交易成交价格、交易编号及交易目标代码;

56、所述定位存储模块,通过多线程模型定位相应的行情订单簿,并将逐笔交易订单信息存储于对应的行情订单簿中;

57、所述匹配更新模块,基于逐笔交易订单的交易类型匹配相应的还原逻辑,通过所述还原逻辑对行情订单簿进行更新以形成新行情订单簿;

58、所述获取判断模块,用于获取待模拟撮合订单,对待模拟撮合订单的有效性进行判断,得到判断结果,其中,待模拟撮合订单信息包括交易目标代码、交易成交方向、交易类型、交易目标数量及交易目标价格;

59、所述确定撮合模块,被设置为:若待模拟撮合订单为有效订单,则根据交易目标代码定位新行情订单簿,根据更新时间确定待模拟撮合订单涉及的交易阶段,根据交易类型在所述交易阶段通过对应的撮合方式进行模拟撮合,得到撮合结果。

60、作为一种可实施方式,所述定位存储模块,被设置为:

61、所述多线程模型包括一级索引、二级索引及行情订单簿;

62、所述一级索引为线程池索引,线程池索引的索引值为处理线程,所述处理线程为通过对交易目标代码的数据取模得到的结果;

63、所述二级索引为订单簿索引,订单簿索引的索引值为哈希值,所述哈希值为对交易目标代码的数据进行哈希处理得到的结果;

64、对交易目标代码的数据取模,初次匹配相应的处理线程,对交易目标代码进行哈希,通过哈希值匹配对应的行情订单簿。

65、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下所述的方法:

66、基于逐笔交易订单产生的时间顺序,获取逐笔交易订单并解析,得到交易订单信息,其中,交易订单信息至少包括交易类型、交易成交方向、交易成交价格、交易编号及交易目标代码;

67、通过多线程模型定位相应的行情订单簿,并将逐笔交易订单信息存储于对应的行情订单簿中;

68、基于逐笔交易订单的交易类型匹配相应的还原逻辑,通过所述还原逻辑对行情订单簿进行更新以形成新行情订单簿;

69、获取待模拟撮合订单,对待模拟撮合订单的有效性进行判断,得到判断结果,其中,待模拟撮合订单信息包括交易目标代码、交易成交方向、交易类型、交易目标数量及交易目标价格;

70、若待模拟撮合订单为有效订单,则根据交易目标代码定位新行情订单簿,根据更新时间确定待模拟撮合订单涉及的交易阶段,根据交易类型在所述交易阶段通过对应的撮合方式进行模拟撮合,得到撮合结果。

71、一种快速实现订单模拟撮合的装置,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下所述的方法:

72、基于逐笔交易订单产生的时间顺序,获取逐笔交易订单并解析,得到交易订单信息,其中,交易订单信息至少包括交易类型、交易成交方向、交易成交价格、交易编号及交易目标代码;

73、通过多线程模型定位相应的行情订单簿,并将逐笔交易订单信息存储于对应的行情订单簿中;

74、基于逐笔交易订单的交易类型匹配相应的还原逻辑,通过所述还原逻辑对行情订单簿进行更新以形成新行情订单簿;

75、获取待模拟撮合订单,对待模拟撮合订单的有效性进行判断,得到判断结果,其中,待模拟撮合订单信息包括交易目标代码、交易成交方向、交易类型、交易目标数量及交易目标价格;

76、若待模拟撮合订单为有效订单,则根据交易目标代码定位新行情订单簿,根据更新时间确定待模拟撮合订单涉及的交易阶段,根据交易类型在所述交易阶段通过对应的撮合方式进行模拟撮合,得到撮合结果。

77、本发明由于采用了以上技术方案,具有显著的技术效果:

78、本发明通过多线程模型定位相应的行情订单簿,能够快速的完成行情订单簿的还原与更新;不同阶段设有不同的模拟撮合方式,提高策略回测有效性。


技术特征:

1.一种快速实现订单模拟撮合的方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,通过多线程模型定位相应的行情订单簿,包括以下步骤:

3.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,所述行情订单簿设有至少三个维度的存储结构;

4.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,所述交易订单信息中的交易类型包括第一委托类型和第一成交类型;

5.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,所述交易订单信息中的交易类型还包括第二委托类型及第二成交类型,所述第二委托类型包括限价交易订单、最优交易订单及市场价格交易订单;所述第二成交类型包括成交订单及第二撤销订单;

6.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,所述待模拟撮合订单交易阶段包括集合竞价阶段、连续竞价阶段,所述交易类型包括限价交易类型、第一部分成交类型、第二部分成交类型、第一转换类型、第二转换类型、全部操作类型及即时操作类型。

7.根据权利要求6所述的快速实现订单模拟撮合的方法,其特征在于,根据交易阶段、交易类型触发相应的撮合方式进而进行模拟撮合,得到撮合结果,包括以下步骤:

8.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,所述待模拟撮合订单为新交易订单时,包括以下步骤:

9.根据权利要求1所述的快速实现订单模拟撮合的方法,其特征在于,当待模拟撮合订单为挂单交易订单时,包括以下步骤:

10.一种快速实现订单模拟撮合的系统,其特征在于,包括订单获取模块、定位存储模块、匹配更新模块、获取判断模块及确定撮合模块;

11.根据权利要求10所述的快速实现订单模拟撮合的系统,其特征在于,所述定位存储模块,被设置为:

12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任意一项所述的方法。

13.一种快速实现订单模拟撮合的装置,包括存储器、处理器以及存储在所述存储器中并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9任意一项所述的方法。


技术总结
本发明公开一种快速实现订单模拟撮合的方法、系统及装置,包括:基于逐笔交易订单产生的时间顺序,获取逐笔交易订单并解析得到交易订单信息;通过多线程模型定位相应的行情订单簿并将逐笔交易订单信息存储于行情订单簿中;基于逐笔交易订单的交易类型匹配相应的还原逻辑,通过还原逻辑对行情订单簿进行更新以形成新行情订单簿;获取待模拟撮合订单,对待模拟撮合订单的有效性进行判断得到判断结果;若为有效订单则根据交易目标代码定位新行情订单簿,确定待模拟撮合订单涉及的交易阶段,通过对应的撮合方式进行模拟撮合得到撮合结果。本发明通过多线程模型定位相应的行情订单簿,能够快速的完成行情订单簿的还原与更新;提高策略回测有效性。

技术研发人员:童卫,冯杰,余艳玲,李斌,刘士毅,徐雪
受保护的技术使用者:浙商证券股份有限公司
技术研发日:
技术公布日:2024/9/23

最新回复(0)