买卖股票的数据结构 - 订单簿
最近股票市场很热闹啊,你知道买单和卖单是如何匹配的吗?
证券交易所使用的数据结构称为订单簿 (Order Book)。订单簿是按价格排列的订单队列。它有一个买入簿和一个卖出簿,匹配时按照先进先出 (First In First Out)的原则。
下图是一个简单的订单簿数据结构示意图。

我们结合图来看一个例子。如果买入 2700 股的市价单,会发生什么情况呢?
-
该买入订单与价格为 100.10 的所有卖出订单以及价格为 100.11 的第一笔订单(以浅红色显示)相匹配。
-
现在,由于大买单 “吃掉 ”了卖出簿上的第一个价位,最佳卖出价从 100.10 升至 100.11。
-
因此,当市场看涨时,人们倾向于买入股票,价格就会一涨再涨。
订单簿的高效数据结构必须满足以下条件:
-
恒定的查询时间。操作包括:
-
获取某一价位或两个价位之间的成交量 -
查询最佳买入价/卖出价。
-
快速添加/取消/执行/更新操作,时间复杂度最好为 O(1)。操作包括:
-
下新订单 -
取消订单 -
匹配订单
欢迎点赞留言提出你的宝贵意见!
【图解架构设计,关注公众号:ByteByteGo】