CN110955657B - 一种适用于证券交易系统的订单簿档位数据的处理方法 - Google Patents
一种适用于证券交易系统的订单簿档位数据的处理方法 Download PDFInfo
- Publication number
- CN110955657B CN110955657B CN201911090600.0A CN201911090600A CN110955657B CN 110955657 B CN110955657 B CN 110955657B CN 201911090600 A CN201911090600 A CN 201911090600A CN 110955657 B CN110955657 B CN 110955657B
- Authority
- CN
- China
- Prior art keywords
- data
- gear
- price
- data structure
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Economics (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Computing Systems (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及变数据结构技术领域,具体来说是一种适用于证券交易系统的订单簿档位数据的处理方法,包括订单簿数据,用于存放着所有还未成交的订单,两个买卖方向相反的档位数据结构,红黑树数据结构索引,用于索引两个档位数据结构,其特征在于处理方法如下:S1.为两个买卖方向相反的档位数据结构额外建立一个数组索引;S2.获取额外建立的数组索引中价格档位数量的数据,建立计算模块:本发明同现有技术相比,其优点在于:新方案使得插入订单的动作变成了时间复杂度为O(1)的操作;插入效率更高了,使得系统拥有了更大的订单处理吞吐量和更低的时延。
Description
技术领域
本发明涉及计算机数据处理技术领域,具体来说是一种适用于证券交易系统的订单簿档位数据的处理方法。
背景技术
证券交易系统在交易的过程中,我们需要在内存中维护一个订单容器,里面存放着所有还未成交的订单,这个容器记作“订单簿(OrderBook)”。
在一个“订单簿”中,所有价格相等并且买卖方向相同的订单被视作同一档订单,属于同一档位的订单我们需要用链表串联起来,并用一个数据结构(记作priceLeader)保存这个链表的信息、以及保存这个价格档位上所有订单的汇总信息(价格,总下单股数,剩余未成交股数,已成交股数),如图1所示。一个订单簿包含买卖方向相反的两个priceLeader的集合,记作leaderBookBuy和leaderBookSell,订单簿的结构如图2所示。
由于股票的交易规则中有最小价格变动单位的限制(记作tickSize),在单个股票的最高价(记作highLimit)和最低价(记作lowLimit)构成的涨跌幅范围内,价格档位数量(记作levelCount)可通过下面的公式计算出来:
levelCount=int((highLimit-lowLimit)/tickSize)+1
在交易的过程中,每收到一笔新订单(记作newOrder),系统会尝试与交易方向相反的最优价格档位上的订单进行撮合成交,如果交易方向相反的最优价格档位不满足newOrder所设定的价格或newOrder只有部分数量被撮合时,则newOrder会被插入到它自己所属的priceLeader记录的链表中去,等待将来被其它新订单撮合。
交易系统在一天中任意时刻,订单簿中未成交的订单通常不会覆盖所有的价格档位,也就是说,这些订单是离散分布在不同档位上的。
现在的订单簿在维护每一个买卖方向的priceLeader集合时用的数据结构只有红黑树(记作leaderMap),这个数据结构在增加删除priceLeader后,可以方便的查询到最小价格priceLeader和最大价格priceLeader。但是这个数据结构在每次查询所花费的时间复杂度是O(logN),每个未成交完成的新订单都要花费这个时间去找所属档位的priceLeader,现有的组织priceLeader的数据结构所花费的时间复杂度对性能影响较大,增加了交易系统的整体延时,降低了交易系统的吞吐量。
发明内容
本发明的目的在于解决现有技术的不足,提供一种插入订单效率更高,使得系统拥有更大的订单处理吞吐量和更低的时延的适用于证券交易系统的订单簿档位数据的处理方法。
为了实现上述目的,设计一种适用于证券交易系统的订单簿档位数据的处理方法,包括订单簿数据,用于存放着所有还未成交的订单,两个买卖方向相反的档位数据结构,红黑树数据结构索引,用于索引两个档位数据结构,其特征在于处理方法如下:
S1.为两个买卖方向相反的档位数据结构额外建立一个数组索引;
S2.获取额外建立的数组索引中价格档位数量的数据,建立计算模块:
P=N*tickSize+lowLimit
N=int((P-lowLimit)/tickSize)
其中N表示额外建立数组索引中的数组下标,P表示档位数据结构中的价格数据,tickSize表示最小价格变动单位的限制数据,lowLimit表示单个股票的最低价数据;
S3.当有新订单由于未被撮合完全,要加入到相同方向的档位数据结构时,我们就可以通过这个新订单的价格,计算出它所属价格P档位的额外建立数组索引中的数组下标N;
S4.根据下标N在额外建立数组索引内取得档位数据结构对象,接着判断剩余未成交数量是否为0,如果为零,把这个档位数据结构加入到红黑树数据结构索引中,如果剩余未成交数量大于0,直接将新订单插入到档位数据结构所包含的订单链表中。
额外建立一个数组索引中的元素和所有价格档位数据一一对应,额外建立的数组索引的每个元素都是一个档位数据结构的对象。
额外建立数组索引的元素数量和红黑树数据结构的元素数量相等或者不相等,获取档位数据结构中剩余未成交量数据值,当这个值为0时,把这个档位数据从红黑树数据结构索引中移除。
本发明同现有技术相比,其优点在于:
1.新方案使得插入订单的动作变成了时间复杂度为O(1)的操作。
2.插入效率更高了,使得系统拥有了更大的订单处理吞吐量和更低的时延。
附图说明
图1是本发明订单薄示意图;
图2是本发明订单薄结构示意图;
图3是本发明数组索引示意图;
图中:1.订单薄结构体 2.买方价格档位集合结构体 3.卖方价格档位结构体 4.价格档位数组 5.一个价格档位的结构体 6.订单包装结构体 7.链接子结构 8.业务子结构。
具体实施方式
下面结合附图对本发明作进一步说明,本发明原理对本专业的人来说是非常清楚的。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,链接子结构7用于链接不同订单在一起,其中包含指向下一个订单的指针,指向上一个订单的指针;订单的业务子结构体8,内部包含订单的申报信息(价格,买卖方向,报单数量)。
参见图2,订单簿包含的买方价格档位集合结构体2,内部包含所有的价格档位组成的数组,所有档位的红黑树索引,档位的总剩余未成交量;订单簿包含的卖方价格档位结构体3,内部成员与2中的一致。
参见图3,价格档位数组4,内部包含所有的价格档位。
1、新的订单簿档位数据结构实现基础:
在所有的数据结构中,查找效率最高的是数组,直接按数组下标去获取指定的元素,时间复杂度是O(1)。
2、新的订单簿档位数据结构
在订单簿中,除了使用leaderMap索引priceLeader之外,我们为每个方向的priceLeader额外再建立一个数组索引(记作leaderArray),如图3所示;这个数组的元素和所有价格档位一一对应,leaderArray数组的每个元素都是一个priceLeader对象;我们允许leaderArray数组的元素数量和leaderMap中索引的元素数量不相等,由于数组中每个priceLeader对象中包含该档位剩余未成交量这个统计值,当这个值为0时,我们可以认为这个价格档位上没有订单存在,并且把这个档位从leaderMap中移除。这个数组包含levelCount个元素,leaderArray数组下标N对应priceLeader的价格P通过以下公式确定:
P=N*tickSize+lowLimit
当有新订单(newOrder)由于未被撮合完全,要加入到相同方向的价格档位上时,我们就可以通过这个新订单的价格,计算出它所属价格P档位的leaderArray数组下标N:
N=int((P-lowLimit)/tickSize)
根据下标N在leaderArray数组内取得priceLeader对象,这个操作的时间复杂度为O(1),接着判断剩余未成交数量(记作quantity)是否为0,如果为零,把这个priceLeader加入到leaderMap索引中,并且将quantity设置为新订单的报单数量;如果quantity大于0,说明这个档位上已经存在订单,并且已经存在于leaderMap索引中,我们就可以直接将newOrder插入到priceLeader所包含的订单链表中,并给该档位quantity加上新订单的报单数量。
此专利中所述的订单簿档位数据结构已经在【上海证券交易所-交易系统升级建设一期项目】中进行了实施,将插入订单的动作变成了时间复杂度为O(1)的操作(代码中下划线的部分是重点),源代码位于内部代码仓库地址GTS/orderbook.git中,主要逻辑在order_book.go中实现,下面是截取的关键源代码段:
Claims (2)
1.一种适用于证券交易系统的订单簿档位数据的处理方法,包括
订单簿数据,用于存放着所有还未成交的订单,
两个买卖方向相反的档位数据结构,
红黑树数据结构索引,用于索引两个档位数据结构,
其特征在于处理方法如下:
S1.为两个买卖方向相反的档位数据结构额外建立一个数组索引,额外建立一个数组索引中的元素和所有价格档位数据一一对应,额外建立的数组索引的每个元素都是一个档位数据结构的对象;
S2.获取额外建立的数组索引中价格档位数量的数据,建立计算模块:
P=N* tickSize+lowLimit
N=int((P-lowLimit)/tickSize)
其中N表示额外建立数组索引中的数组下标,P表示档位数据结构中的价格数据,tickSize表示最小价格变动单位的限制数据,lowLimit表示单个股票的最低价数据;
S3.当有新订单由于未被撮合完全,要加入到相同方向的档位数据结构时,我们就可以通过这个新订单的价格,计算出它所属价格P档位的额外建立数组索引中的数组下标N;
S4.根据下标N在额外建立数组索引内取得档位数据结构对象,接着判断剩余未成交数量是否为0,如果为零,把这个档位数据结构加入到红黑树数据结构索引中,如果剩余未成交数量大于0,直接将新订单插入到档位数据结构所包含的订单链表中。
2.如权利要求1所述的一种适用于证券交易系统的订单簿档位数据的处理方法,其特征在于额外建立数组索引的元素数量和红黑树数据结构的元素数量相等或者不相等,获取档位数据结构中剩余未成交量数据值,当这个值为0时,把这个档位数据从红黑树数据结构索引中移除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911090600.0A CN110955657B (zh) | 2019-11-09 | 2019-11-09 | 一种适用于证券交易系统的订单簿档位数据的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911090600.0A CN110955657B (zh) | 2019-11-09 | 2019-11-09 | 一种适用于证券交易系统的订单簿档位数据的处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955657A CN110955657A (zh) | 2020-04-03 |
CN110955657B true CN110955657B (zh) | 2023-05-16 |
Family
ID=69976655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911090600.0A Active CN110955657B (zh) | 2019-11-09 | 2019-11-09 | 一种适用于证券交易系统的订单簿档位数据的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955657B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2011201428A1 (en) * | 2010-05-31 | 2011-12-15 | Tata Consultancy Services Limited | Single threaded system for matching, computation and broadcasting of market data for stock exchange |
WO2012136627A1 (en) * | 2011-04-03 | 2012-10-11 | Straticator Ltd | A method and a system for communicating trade orders for a financial instrument, a method for generating a trading strategy for a financial instrument and a trading strategy system for providing trade decisions for a financial instrument |
CN108376367A (zh) * | 2018-02-26 | 2018-08-07 | 深圳市富途网络科技有限公司 | 一种实现股票买卖档支持点击响应的方法及系统 |
-
2019
- 2019-11-09 CN CN201911090600.0A patent/CN110955657B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2011201428A1 (en) * | 2010-05-31 | 2011-12-15 | Tata Consultancy Services Limited | Single threaded system for matching, computation and broadcasting of market data for stock exchange |
WO2012136627A1 (en) * | 2011-04-03 | 2012-10-11 | Straticator Ltd | A method and a system for communicating trade orders for a financial instrument, a method for generating a trading strategy for a financial instrument and a trading strategy system for providing trade decisions for a financial instrument |
CN108376367A (zh) * | 2018-02-26 | 2018-08-07 | 深圳市富途网络科技有限公司 | 一种实现股票买卖档支持点击响应的方法及系统 |
Non-Patent Citations (1)
Title |
---|
王苏生 ; 江国朝 ; 董海玲 ; .订单流驱动的限价订单簿动态演化.深圳大学学报(理工版).2011,(05),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110955657A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521411B (zh) | 公式及公式数据处理装置和公式及公式数据处理方法 | |
CN102024046B (zh) | 数据重复性校验方法和装置及系统 | |
US20070239673A1 (en) | Removing nodes from a query tree based on a result set | |
CN109684616A (zh) | 动态报表公式组装填报的方法及系统 | |
CN107067322A (zh) | 一种应用于p2p网络借贷企业数据接入模型的系统及方法 | |
CN107766481A (zh) | 一种发现互联网金融平台的方法和系统 | |
CN107480268A (zh) | 数据查询方法及装置 | |
CN103577455A (zh) | 用于数据库聚集操作的数据处理方法和系统 | |
CN106325756A (zh) | 一种数据存储、数据计算方法和设备 | |
WO2018166145A1 (zh) | 还款数据分批报盘方法和装置 | |
CN110955657B (zh) | 一种适用于证券交易系统的订单簿档位数据的处理方法 | |
CN108648092A (zh) | 保险赔付率计算方法、装置、设备及计算机可读存储介质 | |
CN106126721A (zh) | 一种实时计算平台的数据处理方法和装置 | |
WO2019153483A1 (zh) | 手续费确定方法、装置、终端设备及介质 | |
CN106933927A (zh) | 数据表的连接方法和装置 | |
CN110245281A (zh) | 互联网资产信息收集方法及终端设备 | |
CN105550220B (zh) | 一种异构系统的取数的方法及装置 | |
CN110245155A (zh) | 数据处理方法、装置、计算机可读存储介质及终端设备 | |
CN106130929A (zh) | 基于图论算法的互联网保险领域的业务报文自动处理方法和系统 | |
CN1897629B (zh) | 基于内存的海量话单快速交叉排重方法 | |
CN109299081A (zh) | 清洗房价数据的方法、装置、计算机设备和存储介质 | |
CN106933894A (zh) | 多维度数据的查询方法及装置 | |
CN116934061A (zh) | 基于区块链的碳排放管理方法、系统、设备及存储介质 | |
CN108664322A (zh) | 数据处理方法及系统 | |
CN106649584A (zh) | 一种主从式数据库系统中的索引处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |