5

取引所からオーダーブックを取得するビットコイン トレーダー アプリを作成しています。典型的なオーダーブックは次のようになります: https://www.bitstamp.net/api/order_book/ (「ビッド」と「アスク」の 2 つの部分があり、それらは別々に保存する必要がありますが、同一のデータ構造に格納する必要があります)。1 つの解決策は、この大規模なオーダーブックの一部のみを保存することです。これにより、アクセス効率の問題が解決されますが、一貫性と更新の制限に関係する一連の問題が発生します。したがって、今のところ、より良い解決策は、オーダーブックを取得して更新し続けることです。

このトレーダー アプリは、後でこのフェッチされたオーダーブックを新しい注文と削除された注文で更新します。たとえば、オーダーブックで 1.5BTC を購入する $900 の注文がある場合、その注文は完全にキャンセルされるか、BTC を増減するように更新される可能性があります。また、その価格より下または上に新しい注文が追加される場合があります。

次の 2 つの重要な操作があります。

  1. まったく同じ価格の注文をすばやく見つける (更新またはキャンセルの場合)

  2. 提供された価格に最も近いが、それよりも低い価格の注文をすばやく見つけます

更新の場合、それが更新であることを実際には認識していない可能性があるため、(2) を開始して (1) を実行することになる場合があります。

私はデータ構造の専門家ではないので、最も一般的なものを調べ始めました。今のところ、ある種のツリーであるべきだと感じていますが、どのツリーかはわかりません。私の最も無知な推測は、各ノードが価格の数字であるデータ構造です。たとえば、900 ドルの価格を持つすべてのノードをすばやく見つけてからitems['9']['0']、リーフ ノードを探します。今のところまだ頭が混乱しているので、あまり厳しく判断しないでください。どんなアドバイスも素晴らしいでしょう。

4

1 に答える 1