finance - OrderBook数据库设计

标签 finance orders

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

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

我们可以为每个订单指定一个ID,并一一检查执行订单。但是我们想要可以扩展到数千个有效订单的产品。

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

有什么想法吗?

最佳答案

  • 我们必须小心并仅按收到订单的顺序执行

  • 市场数据通常以时间序列的方式建模,因此它自然是由时间戳来排序的,该时间戳目前可达到皮秒的精度。

    根据您所依赖的技术,如果您不介意付款,我会选择OneTick,这是一个时间序列数据库,它已经具有内置的订单书,该书具有书的深度/价格水平,CEP和许多其他功能更多的。

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

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

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

    该示例来自LMAX Protocol Reference Guide

    关于finance - OrderBook数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960251/

    相关文章:

    finance - FIX session 级拒绝

    java - 通过 Java API 的 ACH 信用

    php - 从 Woocommerce 3 中的特定产品类别获取订单商品

    php - 用于 BACS 付款的保留状态电子邮件通知的其他电子邮件地址

    php - 在 WooCommerce 的电子邮件和订单页面中保存和显示产品自定义数据

    javascript - 自动从 Woocommerce 谢谢重定向到传递变量的外部链接

    sql-server - 使用 T-SQL 将 OHLC 股票市场数据分组为多个时间范围

    r - XTS 的日期有不同的来源。使用 R 计算 beta

    java - IFX 标准 Java 实现

    php - 在 Woocommerce 中将 COD 默认订单状态更改为 "On Hold"而不是 "Processing"