From 6f8fbc2b8242a8527d8cd8c75a6467e1c9f4a654 Mon Sep 17 00:00:00 2001 From: fredfortier Date: Wed, 18 Oct 2017 15:33:15 -0400 Subject: [PATCH] Fix issue with retrieving bundles --- catalyst/examples/simple_loop.py | 6 +++--- catalyst/exchange/exchange_bundle.py | 11 +++++++---- tests/exchange/test_bundle.py | 13 +++++++------ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/catalyst/examples/simple_loop.py b/catalyst/examples/simple_loop.py index 51c68426..77415429 100644 --- a/catalyst/examples/simple_loop.py +++ b/catalyst/examples/simple_loop.py @@ -7,7 +7,7 @@ from catalyst.api import symbol def initialize(context): print('initializing') - context.asset = symbol('etc_btc') + context.asset = symbol('wings_eth') def handle_data(context, data): @@ -35,7 +35,7 @@ run_algorithm( initialize=initialize, handle_data=handle_data, analyze=None, - exchange_name='poloniex', + exchange_name='bittrex', algo_namespace='simple_loop', - base_currency='btc' + base_currency='eth' ) diff --git a/catalyst/exchange/exchange_bundle.py b/catalyst/exchange/exchange_bundle.py index 6f9313d2..f93dfd29 100644 --- a/catalyst/exchange/exchange_bundle.py +++ b/catalyst/exchange/exchange_bundle.py @@ -64,10 +64,13 @@ class ExchangeBundle: if path in self._readers and self._readers[path] is not None: return self._readers[path] - self._readers[path] = BcolzExchangeBarReader( - rootdir=path, - data_frequency=data_frequency - ) + try: + self._readers[path] = BcolzExchangeBarReader( + rootdir=path, + data_frequency=data_frequency + ) + except IOError: + self.get_readers[path] = None return self._readers[path] diff --git a/tests/exchange/test_bundle.py b/tests/exchange/test_bundle.py index 3aa96b22..25d1a6fd 100644 --- a/tests/exchange/test_bundle.py +++ b/tests/exchange/test_bundle.py @@ -76,16 +76,17 @@ class ExchangeBundleTestCase: pass def test_merge_ctables(self): - exchange_name = 'poloniex' + exchange_name = 'bittrex' # Switch between daily and minute for testing # data_frequency = 'daily' - data_frequency = 'minute' + data_frequency = 'daily' exchange = get_exchange(exchange_name) assets = [ exchange.get_asset('eth_btc'), exchange.get_asset('etc_btc'), + exchange.get_asset('wings_eth'), ] start = pd.to_datetime('2017-9-1', utc=True) @@ -102,7 +103,7 @@ class ExchangeBundleTestCase: asset=asset, data_frequency=data_frequency, # period='2017-9', - period='2017-9', + period='2017', # Dont't forget to update if you change your dates start_dt=start, end_dt=end, @@ -116,7 +117,7 @@ class ExchangeBundleTestCase: # In minute mode, the data is there too. This signals that the minute # writer / reader is more powerful. This explains why I did not # encounter these problems as I have been focusing on minute data. - reader = self.get_reader(data_frequency) + reader = exchange_bundle.get_reader(data_frequency) for asset in assets: # Since this pair was loaded last. It should be there in daily mode. arrays = reader.load_raw_arrays( @@ -125,8 +126,8 @@ class ExchangeBundleTestCase: start_dt=start, end_dt=end ) - print('found {} rows for {} ingestion'.format( - len(arrays[0]), asset.symbol) + print('found {} rows for {} ingestion\n{}'.format( + len(arrays[0]), asset.symbol, arrays[0]) ) pass