MCPcopy Create free account
hub / github.com/ccxt/ccxt / handle_order_book

Method handle_order_book

python/ccxt/pro/backpack.py:787–827  ·  view source on GitHub ↗
(self, client: Client, message)

Source from the content-addressed store, hash-verified

785 return await self.watch_public(topics, messageHashes, params, True)
786
787 def handle_order_book(self, client: Client, message):
788 #
789 # initial snapshot is fetched with ccxt's fetchOrderBook
790 # the feed does not include a snapshot, just the deltas
791 #
792 # {
793 # "data": {
794 # "E": "1754903057555305",
795 # "T": "1754903057554352",
796 # "U": 1345937436,
797 # "a": [],
798 # "b": [],
799 # "e": "depth",
800 # "s": "ETH_USDC",
801 # "u": 1345937436
802 # },
803 # "stream": "depth.ETH_USDC"
804 # }
805 #
806 data = self.safe_dict(message, 'data', {})
807 marketId = self.safe_string(data, 's')
808 symbol = self.safe_symbol(marketId)
809 if not (symbol in self.orderbooks):
810 self.orderbooks[symbol] = self.order_book()
811 storedOrderBook = self.orderbooks[symbol]
812 nonce = self.safe_integer(storedOrderBook, 'nonce')
813 deltaNonce = self.safe_integer(data, 'u')
814 messageHash = 'orderbook:' + symbol
815 if nonce is None:
816 cacheLength = len(storedOrderBook.cache)
817 # the rest API is very delayed
818 # usually it takes at least 9 deltas to resolve
819 snapshotDelay = self.handle_option('watchOrderBook', 'snapshotDelay', 10)
820 if cacheLength == snapshotDelay:
821 self.spawn(self.load_order_book, client, messageHash, symbol, None, {})
822 storedOrderBook.cache.append(data)
823 return
824 elif nonce > deltaNonce:
825 return
826 self.handle_delta(storedOrderBook, data)
827 client.resolve(storedOrderBook, messageHash)
828
829 def handle_delta(self, orderbook, delta):
830 timestamp = self.parse_to_int(self.safe_integer(delta, 'T', 0) / 1000)

Callers 1

handle_messageMethod · 0.95

Calls 10

handle_deltaMethod · 0.95
safe_dictMethod · 0.80
safe_stringMethod · 0.80
safe_symbolMethod · 0.80
order_bookMethod · 0.80
safe_integerMethod · 0.80
handle_optionMethod · 0.80
resolveMethod · 0.65
spawnMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected