chore: improve ohlcvs interface

This commit is contained in:
Matthias
2025-01-25 18:13:11 +01:00
parent 2a370aecd8
commit d3f6227d3f
2 changed files with 7 additions and 6 deletions

View File

@@ -2397,7 +2397,7 @@ class Exchange:
if self._exchange_ws:
candle_ts = dt_ts(timeframe_to_prev_date(timeframe))
prev_candle_ts = dt_ts(date_minus_candles(timeframe, 1))
candles = self._exchange_ws.ohlcvs.get(pair, {}).get(timeframe)
candles = self._exchange_ws.ohlcvs(pair, timeframe)
half_candle = int(candle_ts - (candle_ts - prev_candle_ts) * 0.5)
last_refresh_time = int(
self._exchange_ws.klines_last_refresh.get((pair, timeframe, candle_type), 0)

View File

@@ -83,12 +83,13 @@ class ExchangeWS:
"""
self._ccxt_object.ohlcvs.get(paircomb[0], {}).pop(paircomb[1], None)
@property
def ohlcvs(self) -> dict[str, dict[str, list[list]]]:
def ohlcvs(self, pair: str, timeframe: str) -> list[list]:
"""
Returns the ccxt cache for OHLCV data
Returns a copy of the klines for a pair/timeframe combination
Note: this will only contain the data received from the websocket
so the data will build up over time.
"""
return self._ccxt_object.ohlcvs
return deepcopy(self._ccxt_object.ohlcvs.get(pair, {}).get(timeframe, []))
def cleanup_expired(self) -> None:
"""
@@ -185,7 +186,7 @@ class ExchangeWS:
:param candle_ts: timestamp of the end-time of the candle we expect.
"""
# Deepcopy the response - as it might be modified in the background as new messages arrive
candles = deepcopy(self._ccxt_object.ohlcvs.get(pair, {}).get(timeframe))
candles = self.ohlcvs(pair, timeframe)
refresh_date = self.klines_last_refresh[(pair, timeframe, candle_type)]
received_ts = candles[-1][0] if candles else 0
drop_hint = received_ts >= candle_ts