obmrs for Rust
[This is a project under review. Since: 2024/10/07]
obmrsは、Rustで記述された仮想通貨や株式市場向けのOrderBook Management Systemです。参加者は取引所から送られるOrderbook(注文板)を受信し、効率的かつ整理された方法で保持するための構造体を活用できます。
概要
このライブラリは、OrderBoardという構造体を提供し、Orderbookの買い注文(bids)と売り注文(asks)を価格でソートされたマップとして保存し、効率的な入出力およびデータ保持を行います。
OrderBoardは、価格ごとにまとめたBooks構造体のデータを保存します。これは、各価格に紐づく複数の注文ではなく、各価格に対する総量を記録します。
converter()関数を用いることで、さまざまな型(i64, f64, String, Decimalなど)からBook(注文量と価格のペア)構造体への変換をシンプルに行うことができます。
特徴
- 高速なデータ処理: 価格と注文サイズを効率的に扱うため、
BTreeMapを使用しています。これにより、データの検索・挿入・削除が高速に行えます。 - 柔軟な型対応:
converter機能により、複数の異なるデータ型(整数や小数、文字列など)を簡単にBook構造体に変換可能です。 - ベストプライスの取得: 買い注文と売り注文のうち、最良の注文(最高の買い、最低の売り)を素早く取得できます。
- サイズフィルタリング機能:
wall(size)により、指定したサイズ以上の注文をフィルタリングすることができます。 - 内側注文のトリム機能:
trim_inside_best_bookメソッドで、注文板の内側にある注文をトリムし、最適化された状態に維持できます。これにより、不要なデータが削除され、メモリ効率を向上させます。
インストール
Cargo.tomlに以下の依存関係を追加してください:
$ cargo add obmrs
[]
= "0.1.0"
使用方法
以下のシンプルなコードサンプルを通じて、基本的な操作の流れを確認できます。
1. OrderBoardの作成
OrderBoard構造体を生成し、初期化を行います。bidsは買い注文、asksは売り注文です。
use ;
use Decimal;
2. Orderの追加と変換
異なるデータ型をサポートするconverter()を使って、Book構造体に変換し、OrderBoardに追加します。
use ;
use Decimal;
3. ベストプライスの取得
OrderBoardから現在の最良の売り注文(ask)と最良の買い注文(bid)を取得します。
4. サイズフィルタリング(壁注文の取得)
指定されたサイズ以上の注文を取得したい場合は、Books::wall(size)メソッドを使用します。
5. [option] 内側注文の削除
trim_inside_best_bookメソッドを使って、現在のベストASKとベストBIDより内側にある注文を削除します。この機能により不要な注文が削除され、効率化が図れます。
size:0が返ってくる取引所情報では不要です。size:0がpushされた場合、当クレートはその価格情報を削除します。
機能詳細
new: 新しいOrderBoardを作成します。最大保持数と精度を引数に取ります。converter: 様々な型のデータ(i64,f64,String,Decimalなど)をBookに変換します。push: 単一のBookをBooksに追加します。extend: 複数のBookを一度にBooks構造に追加します。best: 最良の売り・買い注文(best_ask, best_bid)を取得します。wall(size): 指定したサイズ以上の注文(壁)を取得します。trim_inside_best_book(best_ask, best_bid): ベストASKとベストBIDの内側にある注文を削除します。
via Golang Client
Go言語でこのライブラリを扱いたい場合は、以下にあるクライアントライブラリを参考にしてください。
Author
License
MIT License
このプロジェクトはMITライセンスに基づいて提供されており、自由に使用・改変・再配布が可能です。