注文からオーダーブックを構築するコードを探しています
たとえば、注文が
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 で「最後の数量」を取得... もちろん辞書を使用できますが、おそらく遅すぎるでしょう。もっと速いものが欲しい。