diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index fb5f8c7ba..77ce8d899 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -171,18 +171,15 @@ def get_order(order_id: str) -> Dict: return _API.get_order(order_id) +# TODO: reimplement, not part of ccxt def get_pair_detail_url(pair: str) -> str: - return _API.get_pair_detail_url(pair) + return "" def get_markets() -> List[dict]: return _API.fetch_markets() -def get_market_summaries() -> List[Dict]: - return _API.public_get_marketsummaries()['result'] - - def get_name() -> str: return _API.name diff --git a/freqtrade/exchange/interface.py b/freqtrade/exchange/interface.py index 8417d4704..1f316e662 100644 --- a/freqtrade/exchange/interface.py +++ b/freqtrade/exchange/interface.py @@ -132,27 +132,3 @@ class Exchange(ABC): Returns all available markets. :return: List of all available pairs """ - - @abstractmethod - def get_market_summaries(self) -> List[Dict]: - """ - Returns a 24h market summary for all available markets - :return: list, format: [ - { - 'MarketName': str, - 'High': float, - 'Low': float, - 'Volume': float, - 'Last': float, - 'TimeStamp': datetime, - 'BaseVolume': float, - 'Bid': float, - 'Ask': float, - 'OpenBuyOrders': int, - 'OpenSellOrders': int, - 'PrevDay': float, - 'Created': datetime - }, - ... - ] - """ diff --git a/freqtrade/main.py b/freqtrade/main.py index 0bf988fa2..3994eaee4 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -469,13 +469,13 @@ def gen_pair_whitelist(base_currency: str, key: str = 'BaseVolume') -> List[str] :return: List of pairs """ - summaries = sorted( - (s for s in exchange.get_market_summaries() if s['MarketName'].endswith(base_currency)), + pairs = sorted( + (s['symbol'] for s in exchange.get_markets() if s['quote'] == base_currency), key=lambda s: s.get(key) or 0.0, reverse=True ) - return [s['MarketName'].replace('-', '_') for s in summaries] + return pairs def cleanup() -> None: diff --git a/freqtrade/tests/test_acl_pair.py b/freqtrade/tests/test_acl_pair.py index f847f27b4..06d6e119b 100644 --- a/freqtrade/tests/test_acl_pair.py +++ b/freqtrade/tests/test_acl_pair.py @@ -2,6 +2,7 @@ from freqtrade.main import refresh_whitelist, gen_pair_whitelist + # whitelist, blacklist, filtering, all of that will # eventually become some rules to run on a generic ACL engine # perhaps try to anticipate that by using some python package @@ -25,59 +26,78 @@ def whitelist_conf(): } -def get_market_summaries(): - return [{ - 'MarketName': 'BTC-TKN', - 'High': 0.00000919, - 'Low': 0.00000820, - 'Volume': 74339.61396015, - 'Last': 0.00000820, - 'BaseVolume': 1664, - 'TimeStamp': '2014-07-09T07:19:30.15', - 'Bid': 0.00000820, - 'Ask': 0.00000831, - 'OpenBuyOrders': 15, - 'OpenSellOrders': 15, - 'PrevDay': 0.00000821, - 'Created': '2014-03-20T06:00:00', - 'DisplayMarketName': '' - }, { - 'MarketName': 'BTC-ETH', - 'High': 0.00000072, - 'Low': 0.00000001, - 'Volume': 166340678.42280999, - 'Last': 0.00000005, - 'BaseVolume': 42, - 'TimeStamp': '2014-07-09T07:21:40.51', - 'Bid': 0.00000004, - 'Ask': 0.00000005, - 'OpenBuyOrders': 18, - 'OpenSellOrders': 18, - 'PrevDay': 0.00000002, - 'Created': '2014-05-30T07:57:49.637', - 'DisplayMarketName': '' - }, { - 'MarketName': 'BTC-BLK', - 'High': 0.00000072, - 'Low': 0.00000001, - 'Volume': 166340678.42280999, - 'Last': 0.00000005, - 'BaseVolume': 3, - 'TimeStamp': '2014-07-09T07:21:40.51', - 'Bid': 0.00000004, - 'Ask': 0.00000005, - 'OpenBuyOrders': 18, - 'OpenSellOrders': 18, - 'PrevDay': 0.00000002, - 'Created': '2014-05-30T07:57:49.637', - 'DisplayMarketName': '' - }] - - def get_markets(): - return [{'symbol': 'ETH/BTC', 'base': 'ETH', 'quote':'BTC', 'active': True}, - {'symbol': 'TKN/BTC', 'base': 'TKN', 'quote':'BTC', 'active': True}, - {'symbol': 'BLK/BTC', 'base': 'BLK', 'quote':'BTC', 'active': True}] + return [ + { + 'id': 'ethbtc', + 'symbol': 'ETH/BTC', + 'base': 'ETH', + 'quote': 'BTC', + 'active': True, + 'precision': { + 'price': 8, + 'amount': 8, + 'cost': 8, + }, + 'lot': 0.00000001, + + 'limits': { + 'amount': { + 'min': 0.01, + 'max': 1000, + }, + 'price': 500000, + 'cost': 500000, + }, + 'info': '', + }, + { + 'id': 'tknbtc', + 'symbol': 'TKN/BTC', + 'base': 'TKN', + 'quote': 'BTC', + 'active': True, + 'precision': { + 'price': 8, + 'amount': 8, + 'cost': 8, + }, + 'lot': 0.00000001, + + 'limits': { + 'amount': { + 'min': 0.01, + 'max': 1000, + }, + 'price': 500000, + 'cost': 500000, + }, + 'info': '', + }, + { + 'id': 'blkbtc', + 'symbol': 'BLK/BTC', + 'base': 'BLK', + 'quote': 'BTC', + 'active': True, + 'precision': { + 'price': 8, + 'amount': 8, + 'cost': 8, + }, + 'lot': 0.00000001, + + 'limits': { + 'amount': { + 'min': 0.01, + 'max': 1000, + }, + 'price': 500000, + 'cost': 500000, + }, + 'info': '', + } + ] def get_markets_empty(): @@ -114,8 +134,6 @@ def test_refresh_whitelist_dynamic(mocker): mocker.patch.dict('freqtrade.main._CONF', conf) mocker.patch.multiple('freqtrade.main.exchange', get_markets=get_markets) - mocker.patch.multiple('freqtrade.main.exchange', - get_market_summaries=get_market_summaries) # argument: use the whitelist dynamically by exchange-volume whitelist = ['TKN/BTC', 'ETH/BTC'] refreshedwhitelist = refresh_whitelist(