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

Method handle_ohlcv

python/ccxt/pro/binance.py:1546–1607  ·  view source on GitHub ↗
(self, client: Client, message)

Source from the content-addressed store, hash-verified

1544 return await self.un_watch_ohlcv_for_symbols([[symbol, timeframe]], params)
1545
1546 def handle_ohlcv(self, client: Client, message):
1547 #
1548 # {
1549 # "e": "kline",
1550 # "E": 1579482921215,
1551 # "s": "ETHBTC",
1552 # "k": {
1553 # "t": 1579482900000,
1554 # "T": 1579482959999,
1555 # "s": "ETHBTC",
1556 # "i": "1m",
1557 # "f": 158411535,
1558 # "L": 158411550,
1559 # "o": "0.01913200",
1560 # "c": "0.01913500",
1561 # "h": "0.01913700",
1562 # "l": "0.01913200",
1563 # "v": "5.08400000",
1564 # "n": 16,
1565 # "x": False,
1566 # "q": "0.09728060",
1567 # "V": "3.30200000",
1568 # "Q": "0.06318500",
1569 # "B": "0"
1570 # }
1571 # }
1572 #
1573 event = self.safe_string(message, 'e')
1574 eventMap = {
1575 'indexPrice_kline': 'indexPriceKline',
1576 'markPrice_kline': 'markPriceKline',
1577 }
1578 event = self.safe_string(eventMap, event, event)
1579 kline = self.safe_value(message, 'k')
1580 marketId = self.safe_string_2(kline, 's', 'ps')
1581 if event == 'indexPriceKline':
1582 # indexPriceKline doesn't have the _PERP suffix
1583 marketId = self.safe_string(message, 'ps')
1584 interval = self.safe_string(kline, 'i')
1585 # use a reverse lookup in a static map instead
1586 unifiedTimeframe = self.find_timeframe(interval)
1587 parsed = [
1588 self.safe_integer(kline, 't'),
1589 self.safe_float(kline, 'o'),
1590 self.safe_float(kline, 'h'),
1591 self.safe_float(kline, 'l'),
1592 self.safe_float(kline, 'c'),
1593 self.safe_float(kline, 'v'),
1594 ]
1595 isSpot = self.is_spot_url(client)
1596 marketType = 'spot' if (isSpot) else 'contract'
1597 symbol = self.safe_symbol(marketId, None, None, marketType)
1598 messageHash = 'ohlcv::' + symbol + '::' + unifiedTimeframe
1599 self.ohlcvs[symbol] = self.safe_value(self.ohlcvs, symbol, {})
1600 stored = self.safe_value(self.ohlcvs[symbol], unifiedTimeframe)
1601 if stored is None:
1602 limit = self.safe_integer(self.options, 'OHLCVLimit', 1000)
1603 stored = ArrayCacheByTimestamp(limit)

Callers

nothing calls this directly

Calls 11

is_spot_urlMethod · 0.95
appendMethod · 0.95
safe_stringMethod · 0.80
safe_valueMethod · 0.80
safe_string_2Method · 0.80
safe_integerMethod · 0.80
safe_floatMethod · 0.80
safe_symbolMethod · 0.80
resolveMethod · 0.65
find_timeframeMethod · 0.45

Tested by

no test coverage detected