44#
55# Live order book updated from the gdax Websocket Feed
66
7- from bintrees import RBTree
7+ from sortedcontainers import SortedDict
88from decimal import Decimal
99import pickle
1010
1515class OrderBook (WebsocketClient ):
1616 def __init__ (self , product_id = 'BTC-USD' , log_to = None ):
1717 super (OrderBook , self ).__init__ (products = product_id )
18- self ._asks = RBTree ()
19- self ._bids = RBTree ()
18+ self ._asks = SortedDict ()
19+ self ._bids = SortedDict ()
2020 self ._client = PublicClient ()
2121 self ._sequence = - 1
2222 self ._log_to = log_to
@@ -37,8 +37,8 @@ def on_close(self):
3737 print ("\n -- OrderBook Socket Closed! --" )
3838
3939 def reset_book (self ):
40- self ._asks = RBTree ()
41- self ._bids = RBTree ()
40+ self ._asks = SortedDict ()
41+ self ._bids = SortedDict ()
4242 res = self ._client .get_product_order_book (product_id = self .product_id , level = 3 )
4343 for bid in res ['bids' ]:
4444 self .add ({
@@ -219,28 +219,28 @@ def get_current_book(self):
219219 return result
220220
221221 def get_ask (self ):
222- return self ._asks .min_key ()
222+ return self ._asks .peekitem ( 0 )[ 0 ]
223223
224224 def get_asks (self , price ):
225225 return self ._asks .get (price )
226226
227227 def remove_asks (self , price ):
228- self ._asks . remove ( price )
228+ del self ._asks [ price ]
229229
230230 def set_asks (self , price , asks ):
231- self ._asks . insert ( price , asks )
231+ self ._asks [ price ] = asks
232232
233233 def get_bid (self ):
234- return self ._bids .max_key ()
234+ return self ._bids .peekitem ( - 1 )[ 0 ]
235235
236236 def get_bids (self , price ):
237237 return self ._bids .get (price )
238238
239239 def remove_bids (self , price ):
240- self ._bids . remove ( price )
240+ del self ._bids [ price ]
241241
242242 def set_bids (self , price , bids ):
243- self ._bids . insert ( price , bids )
243+ self ._bids [ price ] = bids
244244
245245
246246if __name__ == '__main__' :
0 commit comments