(self, client: Client, message)
| 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 | """ |
nothing calls this directly
no test coverage detected