我正在寻找从订单构造订单簿的代码
例如,如果订单是
side | price | quantity
buy 100 1
buy 101 10
buy 100 1000
buy 100 10000
那么聚合的订单簿应该是:
side | price | quantity
buy 100 11001
buy 101 10
在程序生命周期内添加、修改或删除订单。在每次订单更新时,我都需要快速更新 OrderBook。
我确信这是非常常见的任务,所以互联网上应该已经有很多实现了。
感谢您提供任何参考,我正在寻找 c# 实现,但如果需要,我可以用另一种语言重写它。
更新其实我应该改写我的问题。最初订单簿是空的。然后我收到事件:添加订单、更改订单数量或取消订单。我应该从此消息中重新计算 orderBook。但现在我很清楚它应该多么简单。添加订单时,我只需在此价格水平添加数量。当订单数量改变时,我只需要添加“更改”,当订单被取消时,我只需要从相应的价格水平中删除相应的数量。唯一的问题是我应该在哪里存储“最后订单数量”总共有很多订单(数千万),但没有很多活跃订单(不超过 100 000),对于每个活跃订单我需要通过 orderId 获取“最后数量”...当然我可以使用字典,但这可能太慢了。我想要更快的东西。