2011-10-31 103 views
5

OrderBook充满了买卖订单。更新,新订单可能会执行交易。订单数据库设计

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

我们可以为每个订单提供一个id,并逐个执行checkExecute命令。但我们希望能够扩展到数千个活动订单。

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

想法?

回答

2
  • 我们必须要小心,只在收到订单的顺序执行

市场数据通常是仿照时序的方式,因此它自然受到时间戳有序目前其精度达到皮秒级。

取决于你依赖的是什么技术,如果你不介意付钱,我会选择OneTick,这是一个时间系列数据库,它已经有一本内置的书籍深度/价格水平的订购书,CEP等等。

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

至于OrderBook数据模型,它取决于你打算如何使用这本书:你关心多个价格水平吗?书的顶部?你需要匹配出价/要求的实际订单等。

但你可以设计一个模式,它会记录订单量事件,如启动:

enter image description here

的例子是LMAX Protocol Reference Guide

2

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