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

Method handle_ohlcv

python/ccxt/pro/gate.py:948–998  ·  view source on GitHub ↗
(self, client: Client, message)

Source from the content-addressed store, hash-verified

946 return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
947
948 def handle_ohlcv(self, client: Client, message):
949 #
950 # {
951 # "time": 1606292600,
952 # "channel": "spot.candlesticks",
953 # "event": "update",
954 # "result": {
955 # "t": "1606292580", # total volume
956 # "v": "2362.32035", # volume
957 # "c": "19128.1", # close
958 # "h": "19128.1", # high
959 # "l": "19128.1", # low
960 # "o": "19128.1", # open
961 # "n": "1m_BTC_USDT" # sub
962 # }
963 # }
964 #
965 channel = self.safe_string(message, 'channel')
966 channelParts = channel.split('.')
967 rawMarketType = self.safe_string(channelParts, 0)
968 marketType = 'spot' if (rawMarketType == 'spot') else 'contract'
969 result = self.safe_value(message, 'result')
970 if not isinstance(result, list):
971 result = [result]
972 marketIds = {}
973 for i in range(0, len(result)):
974 ohlcv = result[i]
975 subscription = self.safe_string(ohlcv, 'n', '')
976 parts = subscription.split('_')
977 timeframeId = self.safe_string(parts, 0)
978 timeframe = self.find_timeframe(timeframeId)
979 prefix = timeframe + '_'
980 marketId = subscription.replace(prefix, '')
981 symbol = self.safe_symbol(marketId, None, '_', marketType)
982 parsed = self.parse_ohlcv(ohlcv)
983 self.ohlcvs[symbol] = self.safe_value(self.ohlcvs, symbol, {})
984 stored = self.safe_value(self.ohlcvs[symbol], timeframe)
985 if stored is None:
986 limit = self.safe_integer(self.options, 'OHLCVLimit', 1000)
987 stored = ArrayCacheByTimestamp(limit)
988 self.ohlcvs[symbol][timeframe] = stored
989 stored.append(parsed)
990 marketIds[symbol] = timeframe
991 keys = list(marketIds.keys())
992 for i in range(0, len(keys)):
993 symbol = keys[i]
994 timeframe = marketIds[symbol]
995 interval = self.find_timeframe(timeframe)
996 hash = 'candles' + ':' + interval + ':' + symbol
997 stored = self.safe_value(self.ohlcvs[symbol], interval)
998 client.resolve(stored, hash)
999
1000 async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1001 """

Callers

nothing calls this directly

Calls 12

parse_ohlcvMethod · 0.95
appendMethod · 0.95
safe_stringMethod · 0.80
splitMethod · 0.80
safe_valueMethod · 0.80
replaceMethod · 0.80
safe_symbolMethod · 0.80
safe_integerMethod · 0.80
resolveMethod · 0.65
rangeFunction · 0.50
find_timeframeMethod · 0.45

Tested by

no test coverage detected