From ebdb9e423e8ddd8d3ebc233c6278fc977dc8bcb0 Mon Sep 17 00:00:00 2001 From: Frederic Fortier Date: Tue, 6 Mar 2018 20:13:59 -0500 Subject: [PATCH] BLD: one more attempt at fixing the dup candle issue --- catalyst/exchange/ccxt/ccxt_exchange.py | 28 ++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/catalyst/exchange/ccxt/ccxt_exchange.py b/catalyst/exchange/ccxt/ccxt_exchange.py index 5268557d..78386e6c 100644 --- a/catalyst/exchange/ccxt/ccxt_exchange.py +++ b/catalyst/exchange/ccxt/ccxt_exchange.py @@ -386,7 +386,7 @@ class CCXT(Exchange): ) def get_candles(self, freq, assets, bar_count=1, start_dt=None, - end_dt=None): + end_dt=None, floor_dates=True): is_single = (isinstance(assets, TradingPair)) if is_single: assets = [assets] @@ -433,16 +433,20 @@ class CCXT(Exchange): candles[asset] = [] for ohlcv in ohlcvs: - candles[asset].append(dict( - last_traded=pd.to_datetime( - ohlcv[0], unit='ms', utc=True - ), - open=ohlcv[1], - high=ohlcv[2], - low=ohlcv[3], - close=ohlcv[4], - volume=ohlcv[5] - )) + dt = pd.to_datetime(ohlcv[0], unit='ms', utc=True) + if floor_dates: + dt = dt.floor('1T') + + candles[asset].append( + dict( + last_traded=dt, + open=ohlcv[1], + high=ohlcv[2], + low=ohlcv[3], + close=ohlcv[4], + volume=ohlcv[5], + ) + ) candles[asset] = sorted( candles[asset], key=lambda c: c['last_traded'] ) @@ -879,7 +883,7 @@ class CCXT(Exchange): symbol = self.get_symbol(asset_or_symbol) \ if asset_or_symbol is not None else None self.api.cancel_order(id=order_id, - symbol=symbol, params= params) + symbol=symbol, params=params) except (ExchangeError, NetworkError) as e: log.warn(