BLD: added auth alias to support more than one api token per exchange

This commit is contained in:
Frederic Fortier
2018-01-12 19:35:32 -05:00
parent 2f3dbeedcd
commit e688783931
3 changed files with 17 additions and 8 deletions
+3 -2
View File
@@ -192,7 +192,7 @@ def get_symbols_string(assets):
return ', '.join([asset.symbol for asset in array])
def get_exchange_auth(exchange_name, environ=None):
def get_exchange_auth(exchange_name, alias=None, environ=None):
"""
The de-serialized contend of the exchange's auth.json file.
@@ -207,7 +207,8 @@ def get_exchange_auth(exchange_name, environ=None):
"""
exchange_folder = get_exchange_folder(exchange_name, environ)
filename = os.path.join(exchange_folder, 'auth.json')
name = 'auth' if alias is None else alias
filename = os.path.join(exchange_folder, '{}.json'.format(name))
if os.path.isfile(filename):
with open(filename) as data_file:
+2 -2
View File
@@ -13,12 +13,12 @@ exchange_cache = dict()
def get_exchange(exchange_name, base_currency=None, must_authenticate=False,
skip_init=False):
skip_init=False, auth_alias=None):
key = (exchange_name, base_currency)
if key in exchange_cache:
return exchange_cache[key]
exchange_auth = get_exchange_auth(exchange_name)
exchange_auth = get_exchange_auth(exchange_name, alias=auth_alias)
has_auth = (exchange_auth['key'] != '' and exchange_auth['secret'] != '')
if must_authenticate and not has_auth:
+12 -4
View File
@@ -91,6 +91,7 @@ def _run(handle_data,
live_graph,
analyze_live,
simulate_orders,
auth_aliases,
stats_output):
"""Run a backtest for the given algorithm.
@@ -163,14 +164,19 @@ def _run(handle_data,
raise ValueError('Please specify at least one exchange.')
exchange_list = [x.strip().lower() for x in exchange.split(',')]
exchanges = dict()
for exchange_name in exchange_list:
exchanges[exchange_name] = get_exchange(
exchange_name=exchange_name,
for name in exchange_list:
if auth_aliases is not None and name in auth_aliases:
auth_alias = auth_aliases[name]
else:
auth_alias = None
exchanges[name] = get_exchange(
exchange_name=name,
base_currency=base_currency,
must_authenticate=(live and not simulate_orders),
skip_init=True,
auth_alias=auth_alias,
)
open_calendar = get_calendar('OPEN')
@@ -391,6 +397,7 @@ def run_algorithm(initialize,
live_graph=False,
analyze_live=None,
simulate_orders=True,
auth_aliases=None,
stats_output=None,
output=os.devnull):
"""Run a trading algorithm.
@@ -524,5 +531,6 @@ def run_algorithm(initialize,
live_graph=live_graph,
analyze_live=analyze_live,
simulate_orders=simulate_orders,
auth_aliases=auth_aliases,
stats_output=stats_output
)