| 7 | |
| 8 | class OrderBook(dict): |
| 9 | def __init__(self, snapshot={}, depth=None): |
| 10 | self.cache = [] |
| 11 | depth = depth or sys.maxsize |
| 12 | defaults = { |
| 13 | 'bids': [], |
| 14 | 'asks': [], |
| 15 | 'timestamp': None, |
| 16 | 'datetime': None, |
| 17 | 'nonce': None, |
| 18 | 'symbol': None, |
| 19 | } |
| 20 | # do not mutate snapshot |
| 21 | defaults.update(snapshot) |
| 22 | if not isinstance(defaults['asks'], order_book_side.OrderBookSide): |
| 23 | defaults['asks'] = order_book_side.Asks(defaults['asks'], depth) |
| 24 | if not isinstance(defaults['bids'], order_book_side.OrderBookSide): |
| 25 | defaults['bids'] = order_book_side.Bids(defaults['bids'], depth) |
| 26 | defaults['datetime'] = Exchange.iso8601(defaults.get('timestamp')) |
| 27 | # merge to self |
| 28 | super(OrderBook, self).__init__(defaults) |
| 29 | |
| 30 | def limit(self): |
| 31 | self['asks'].limit() |