From 8cabb33372cdaea8566bcc9926a756ff7d0ab758 Mon Sep 17 00:00:00 2001 From: Victor Grau Serrat Date: Fri, 22 Sep 2017 09:54:51 -0600 Subject: [PATCH] Autogeneration of symbols.json for bitfinex --- catalyst/exchange/bitfinex/bitfinex.py | 13 +++++++++++++ catalyst/exchange/exchange_utils.py | 10 ++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/catalyst/exchange/bitfinex/bitfinex.py b/catalyst/exchange/bitfinex/bitfinex.py index fe32991a..01ba45d2 100644 --- a/catalyst/exchange/bitfinex/bitfinex.py +++ b/catalyst/exchange/bitfinex/bitfinex.py @@ -23,6 +23,7 @@ from catalyst.exchange.exchange_execution import ExchangeLimitOrder, \ ExchangeStopLimitOrder, ExchangeStopOrder from catalyst.finance.order import Order, ORDER_STATUS from catalyst.protocol import Account +from catalyst.exchange.exchange_utils import get_exchange_symbols_filename # Trying to account for REST api instability # https://stackoverflow.com/questions/15431044/can-i-set-max-retries-for-requests-request @@ -527,3 +528,15 @@ class Bitfinex(Exchange): log.debug('got tickers {}'.format(ticks)) return ticks + + def generate_symbols_json(self, filename=None): + response = self._request('symbols', None) + symbols={} + for symbol in response.json(): + symbols[symbol]= {"symbol":symbol[:-3]+'_'+symbol[-3:], "start_date": "2010-01-01"} + + if(filename is None): + filename = get_exchange_symbols_filename(self.name) + + with open(filename,'w') as f: + json.dump(symbols, f, sort_keys=True, indent=2, separators=(',',':')) diff --git a/catalyst/exchange/exchange_utils.py b/catalyst/exchange/exchange_utils.py index 1bf74a68..ebb33023 100644 --- a/catalyst/exchange/exchange_utils.py +++ b/catalyst/exchange/exchange_utils.py @@ -24,18 +24,20 @@ def get_exchange_folder(exchange_name, environ=None): return exchange_folder -def download_exchange_symbols(exchange_name, environ=None): +def get_exchange_symbols_filename(exchange_name, environ=None): exchange_folder = get_exchange_folder(exchange_name, environ) - filename = os.path.join(exchange_folder, 'symbols.json') + return os.path.join(exchange_folder, 'symbols.json') + +def download_exchange_symbols(exchange_name, environ=None): + filename = get_exchange_symbols_filename(exchange_name) url = SYMBOLS_URL.format(exchange=exchange_name) response = urllib.urlretrieve(url=url, filename=filename) return response def get_exchange_symbols(exchange_name, environ=None): - exchange_folder = get_exchange_folder(exchange_name, environ) - filename = os.path.join(exchange_folder, 'symbols.json') + filename = get_exchange_symbols_filename(exchange_name) if not os.path.isfile(filename): download_exchange_symbols(exchange_name, environ)