ccxt: fetch balances, get wallet health, make bot runnable

This commit is contained in:
Samuel Husso 2018-02-01 22:07:46 +02:00
parent b562239ec8
commit 5da034c313
2 changed files with 18 additions and 10 deletions

View File

@ -60,9 +60,6 @@ def init(config: dict) -> None:
# Check if all pairs are available # Check if all pairs are available
validate_pairs(config['exchange']['pair_whitelist']) validate_pairs(config['exchange']['pair_whitelist'])
print("*"*20)
def validate_pairs(pairs: List[str]) -> None: def validate_pairs(pairs: List[str]) -> None:
""" """
@ -71,7 +68,7 @@ def validate_pairs(pairs: List[str]) -> None:
:param pairs: list of pairs :param pairs: list of pairs
:return: None :return: None
""" """
# Note: ccxt has BaseCurrency/QuoteCurrency format for pairs
if not _API.markets: if not _API.markets:
_API.load_markets() _API.load_markets()
@ -83,9 +80,10 @@ def validate_pairs(pairs: List[str]) -> None:
stake_cur = _CONF['stake_currency'] stake_cur = _CONF['stake_currency']
for pair in pairs: for pair in pairs:
# TODO: ccxt expects pairs in BTC/USD format # Note: ccxt has BaseCurrency/QuoteCurrency format for pairs
pair = pair.replace('_', '/') pair = pair.replace('_', '/')
# TODO: add a support for having coins in BTC/USDT format
if not pair.endswith(stake_cur): if not pair.endswith(stake_cur):
raise OperationalException( raise OperationalException(
'Pair {} not compatible with stake_currency: {}'.format(pair, stake_cur) 'Pair {} not compatible with stake_currency: {}'.format(pair, stake_cur)
@ -135,14 +133,14 @@ def get_balance(currency: str) -> float:
if _CONF['dry_run']: if _CONF['dry_run']:
return 999.9 return 999.9
return _API.get_balance(currency) return _API.fetch_balance()[currency]
def get_balances(): def get_balances():
if _CONF['dry_run']: if _CONF['dry_run']:
return [] return []
return _API.get_balances() return _API.fetch_balance()
def get_ticker(pair: str, refresh: Optional[bool] = True) -> dict: def get_ticker(pair: str, refresh: Optional[bool] = True) -> dict:
@ -181,7 +179,7 @@ def get_markets() -> List[str]:
def get_market_summaries() -> List[Dict]: def get_market_summaries() -> List[Dict]:
return _API.get_market_summaries() return _API.public_get_marketsummaries()['result']
def get_name() -> str: def get_name() -> str:
@ -193,4 +191,12 @@ def get_fee() -> float:
def get_wallet_health() -> List[Dict]: def get_wallet_health() -> List[Dict]:
return _API.get_wallet_health() data = _API.request('Currencies/GetWalletHealth', api='v2')
if not data['success']:
raise OperationalException('{}'.format(data['message']))
return [{
'Currency': entry['Health']['Currency'],
'IsActive': entry['Health']['IsActive'],
'LastChecked': entry['Health']['LastChecked'],
'Notice': entry['Currency'].get('Notice'),
} for entry in data['result']]

View File

@ -52,6 +52,7 @@ def refresh_whitelist(whitelist: List[str]) -> List[str]:
# We need to remove pairs that are unknown # We need to remove pairs that are unknown
final_list = [x for x in sanitized_whitelist if x in known_pairs] final_list = [x for x in sanitized_whitelist if x in known_pairs]
return final_list return final_list
@ -465,8 +466,9 @@ def gen_pair_whitelist(base_currency: str, key: str = 'BaseVolume') -> List[str]
:param key: sort key (defaults to 'BaseVolume') :param key: sort key (defaults to 'BaseVolume')
:return: List of pairs :return: List of pairs
""" """
summaries = sorted( summaries = sorted(
(s for s in exchange.get_market_summaries() if s['MarketName'].startswith(base_currency)), (s for s in exchange.get_market_summaries() if s['MarketName'].endswith(base_currency)),
key=lambda s: s.get(key) or 0.0, key=lambda s: s.get(key) or 0.0,
reverse=True reverse=True
) )