OrderBook数据库设计

时间:2011-10-31 21:58:36

标签: finance orders

OrderBook充满了买卖订单。更新,新订单可以执行交易。

我似乎无法找到任何实施例子。

我们可以给每个订单一个id,并逐个检查执行订单。但我们想要的东西可以扩展到成千上万的有效订单。

我们可以对价格进行排序以获得将要执行的订单(因为它们重叠)。但我们必须小心,只按订单收到的顺序执行:)

思想?

2 个答案:

答案 0 :(得分:2)

Python的OrderedDict可以作为可扩展OrderBook的基础。您可能需要为每个价格级别设置一个有序字典,以便订单根据价格/时间优先级进行匹配。

答案 1 :(得分:2)

  • 我们必须小心,只按接收订单的顺序执行

市场数据通常以时间序列的方式建模,因此它自然按时间戳排序,此时间戳最高可达皮秒精度。

根据您所依赖的技术,如果您不介意付费,我会选择OneTick,这是一个时间序列数据库,已经有一本带有书籍深度的内置订单簿/价格水平,CEP等等。

如果您想自己构建(或依赖免费产品),请查看OpenTSDB这是一个带有LGPLv3 +许可证的开源时间序列数据库。它当然比OneTick慢,但是因为你只需要数千(OneTick处理数十亿),这取决于你的速度要求,它可能会起作用。

对于OrderBook数据模型,它将取决于您将如何使用该书:例如你关心多个价格水平吗?这本书的顶部?您是否需要将出价/要求与实际订单等相匹配..

但您可以从设计记录OrderBook事件的模式开始,例如:

enter image description here

示例来自LMAX Protocol Reference Guide