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

Method handle_ohlcv

python/ccxt/pro/extended.py:706–747  ·  view source on GitHub ↗
(self, client: Client, message)

Source from the content-addressed store, hash-verified

704 return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
705
706 def handle_ohlcv(self, client: Client, message):
707 #
708 # {
709 # "ts": 1695738675123,
710 # "data": [
711 # {
712 # "T": 1695738674000,
713 # "o": "1000.0000",
714 # "l": "800.0000",
715 # "h": "2400.0000",
716 # "c": "2100.0000",
717 # "v": "10.0000"
718 # }
719 # ],
720 # "seq": 1
721 # }
722 #
723 subscription = self.find_subscription(client, 'ohlcv')
724 if subscription is None:
725 return
726 symbol = self.safe_string(subscription, 'symbol')
727 timeframe = self.safe_string(subscription, 'timeframe')
728 candleType = self.safe_string(subscription, 'candleType')
729 cacheKey = timeframe if (candleType == 'trades') else timeframe + ':' + candleType
730 messageHash = self.safe_string(subscription, 'messageHash')
731 self.ohlcvs[symbol] = self.safe_value(self.ohlcvs, symbol, {})
732 stored = self.safe_value(self.ohlcvs[symbol], cacheKey)
733 if stored is None:
734 defaultLimit = self.safe_integer(self.options, 'OHLCVLimit', 1000)
735 limit = self.safe_integer(subscription, 'limit', defaultLimit)
736 stored = ArrayCacheByTimestamp(limit)
737 self.ohlcvs[symbol][cacheKey] = stored
738 previousNonce = self.safe_integer(subscription, 'nonce')
739 nonce = self.safe_integer(message, 'seq')
740 if (previousNonce is not None) and (nonce is not None) and (nonce <= previousNonce):
741 return
742 subscription['nonce'] = nonce
743 data = self.safe_list(message, 'data', [])
744 for i in range(0, len(data)):
745 parsed = self.parse_ohlcv(data[i])
746 stored.append(parsed)
747 client.resolve(stored, messageHash)
748
749 def find_subscription(self, client: Client, name: str):
750 keys = list(client.subscriptions.keys())

Callers 1

handle_messageMethod · 0.95

Calls 10

find_subscriptionMethod · 0.95
parse_ohlcvMethod · 0.95
appendMethod · 0.95
safe_stringMethod · 0.80
safe_valueMethod · 0.80
safe_integerMethod · 0.80
safe_listMethod · 0.80
resolveMethod · 0.65
rangeFunction · 0.50

Tested by

no test coverage detected