From 44ab975d2f3090ae4b533a91c8222eed6f5b6dec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20K=C3=A4chele?= Date: Fri, 27 Oct 2023 14:56:35 +0200 Subject: [PATCH] Add order book scaffolding --- lib/rex/order_book.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 lib/rex/order_book.rb diff --git a/lib/rex/order_book.rb b/lib/rex/order_book.rb new file mode 100644 index 0000000..f2ea1e1 --- /dev/null +++ b/lib/rex/order_book.rb @@ -0,0 +1,32 @@ +require "rbtree" + +module Rex + class OrderBook + def initialize() + @sell_side = tree_with_limit_default + @buy_side = tree_with_limit_default + end + + def add_order(order) + side = if order.is_buy + @buy_side + else + @sell_side + end + + side[order.price].add_order(order) + end + + + def cancel_order(order_id) + end + + private + + def tree_with_limit_default + tree = RBTree.new + tree.default_proc = -> (tree, key) { tree[key] = Limit.new(key) } + tree + end + end +end