From d52d9be59b8b25f27bf7431e76bd9bc532d006fb Mon Sep 17 00:00:00 2001 From: Kuy Krawczeniuk Date: Thu, 25 Mar 2021 16:07:49 -0700 Subject: [PATCH] Add parameter "until_ms" to allow for setting an endtime for downloading historical OHLCV data. --- freqtrade/exchange/exchange.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 5b6e2b20d..f67248bd2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -727,7 +727,7 @@ class Exchange: raise OperationalException(e) from e def get_historic_ohlcv(self, pair: str, timeframe: str, - since_ms: int) -> List: + since_ms: int, until_ms: int = None) -> List: """ Get candle history using asyncio and returns the list of candles. Handles all async work for this. @@ -737,9 +737,13 @@ class Exchange: :param since_ms: Timestamp in milliseconds to get history from :return: List with candle (OHLCV) data """ + + if not until_ms: + until_ms = datetime.now(timezone.utc).timestamp() * 1000 + return asyncio.get_event_loop().run_until_complete( self._async_get_historic_ohlcv(pair=pair, timeframe=timeframe, - since_ms=since_ms)) + since_ms=since_ms, until_ms=until_ms)) def get_historic_ohlcv_as_df(self, pair: str, timeframe: str, since_ms: int) -> DataFrame: @@ -756,7 +760,8 @@ class Exchange: async def _async_get_historic_ohlcv(self, pair: str, timeframe: str, - since_ms: int) -> List: + since_ms: int, + until_ms: int) -> List: """ Download historic ohlcv """ @@ -769,7 +774,7 @@ class Exchange: ) input_coroutines = [self._async_get_candle_history( pair, timeframe, since) for since in - range(since_ms, arrow.utcnow().int_timestamp * 1000, one_call)] + range(since_ms, until_ms, one_call)] results = await asyncio.gather(*input_coroutines, return_exceptions=True)