9

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

我似乎找不到任何实施示例。

我们可以给每个订单一个id,然后一个一个地检查执行订单。但是我们想要一些可以扩展到数千个活跃订单的东西。

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

想法?

4

2 回答 2

2

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

于 2011-10-31T22:08:52.947 回答
2
  • 我们必须小心并仅按照收到订单的顺序执行

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

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

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

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

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

在此处输入图像描述

该示例来自LMAX 协议参考指南

于 2011-11-10T06:24:37.777 回答