Rename get_order_book to fetch_l2_order_book (aligning to ccxt)
This commit is contained in:
		| @@ -110,12 +110,13 @@ class DataProvider: | ||||
|  | ||||
|     def orderbook(self, pair: str, maximum: int) -> Dict[str, List]: | ||||
|         """ | ||||
|         fetch latest orderbook data | ||||
|         Fetch latest l2 orderbook data | ||||
|         Warning: Does a network request - so use with common sense. | ||||
|         :param pair: pair to get the data for | ||||
|         :param maximum: Maximum number of orderbook entries to query | ||||
|         :return: dict including bids/asks with a total of `maximum` entries. | ||||
|         """ | ||||
|         return self._exchange.get_order_book(pair, maximum) | ||||
|         return self._exchange.fetch_l2_order_book(pair, maximum) | ||||
|  | ||||
|     @property | ||||
|     def runmode(self) -> RunMode: | ||||
|   | ||||
| @@ -20,7 +20,7 @@ class Binance(Exchange): | ||||
|         "trades_pagination_arg": "fromId", | ||||
|     } | ||||
|  | ||||
|     def get_order_book(self, pair: str, limit: int = 100) -> dict: | ||||
|     def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: | ||||
|         """ | ||||
|         get order book level 2 from exchange | ||||
|  | ||||
| @@ -30,7 +30,7 @@ class Binance(Exchange): | ||||
|         # get next-higher step in the limit_range list | ||||
|         limit = min(list(filter(lambda x: limit <= x, limit_range))) | ||||
|  | ||||
|         return super().get_order_book(pair, limit) | ||||
|         return super().fetch_l2_order_book(pair, limit) | ||||
|  | ||||
|     def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: | ||||
|         """ | ||||
|   | ||||
| @@ -998,7 +998,7 @@ class Exchange: | ||||
|             raise OperationalException(e) from e | ||||
|  | ||||
|     @retrier | ||||
|     def get_order_book(self, pair: str, limit: int = 100) -> dict: | ||||
|     def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: | ||||
|         """ | ||||
|         get order book level 2 from exchange | ||||
|  | ||||
|   | ||||
| @@ -260,7 +260,7 @@ class FreqtradeBot: | ||||
|                 f"Getting price from order book {bid_strategy['price_side'].capitalize()} side." | ||||
|             ) | ||||
|             order_book_top = bid_strategy.get('order_book_top', 1) | ||||
|             order_book = self.exchange.get_order_book(pair, order_book_top) | ||||
|             order_book = self.exchange.fetch_l2_order_book(pair, order_book_top) | ||||
|             logger.debug('order_book %s', order_book) | ||||
|             # top 1 = index 0 | ||||
|             try: | ||||
| @@ -453,7 +453,7 @@ class FreqtradeBot: | ||||
|         """ | ||||
|         conf_bids_to_ask_delta = conf.get('bids_to_ask_delta', 0) | ||||
|         logger.info(f"Checking depth of market for {pair} ...") | ||||
|         order_book = self.exchange.get_order_book(pair, 1000) | ||||
|         order_book = self.exchange.fetch_l2_order_book(pair, 1000) | ||||
|         order_book_data_frame = order_book_to_dataframe(order_book['bids'], order_book['asks']) | ||||
|         order_book_bids = order_book_data_frame['b_size'].sum() | ||||
|         order_book_asks = order_book_data_frame['a_size'].sum() | ||||
| @@ -642,7 +642,7 @@ class FreqtradeBot: | ||||
|         """ | ||||
|         Helper generator to query orderbook in loop (used for early sell-order placing) | ||||
|         """ | ||||
|         order_book = self.exchange.get_order_book(pair, order_book_max) | ||||
|         order_book = self.exchange.fetch_l2_order_book(pair, order_book_max) | ||||
|         for i in range(order_book_min, order_book_max + 1): | ||||
|             yield order_book[side][i - 1][0] | ||||
|  | ||||
|   | ||||
| @@ -1413,13 +1413,13 @@ def test_refresh_latest_ohlcv_inv_result(default_conf, mocker, caplog): | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize("exchange_name", EXCHANGES) | ||||
| def test_get_order_book(default_conf, mocker, order_book_l2, exchange_name): | ||||
| def test_fetch_l2_order_book(default_conf, mocker, order_book_l2, exchange_name): | ||||
|     default_conf['exchange']['name'] = exchange_name | ||||
|     api_mock = MagicMock() | ||||
|  | ||||
|     api_mock.fetch_l2_order_book = order_book_l2 | ||||
|     exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) | ||||
|     order_book = exchange.get_order_book(pair='ETH/BTC', limit=10) | ||||
|     order_book = exchange.fetch_l2_order_book(pair='ETH/BTC', limit=10) | ||||
|     assert 'bids' in order_book | ||||
|     assert 'asks' in order_book | ||||
|     assert len(order_book['bids']) == 10 | ||||
| @@ -1427,20 +1427,20 @@ def test_get_order_book(default_conf, mocker, order_book_l2, exchange_name): | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize("exchange_name", EXCHANGES) | ||||
| def test_get_order_book_exception(default_conf, mocker, exchange_name): | ||||
| def test_fetch_l2_order_book_exception(default_conf, mocker, exchange_name): | ||||
|     api_mock = MagicMock() | ||||
|     with pytest.raises(OperationalException): | ||||
|         api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NotSupported("Not supported")) | ||||
|         exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) | ||||
|         exchange.get_order_book(pair='ETH/BTC', limit=50) | ||||
|         exchange.fetch_l2_order_book(pair='ETH/BTC', limit=50) | ||||
|     with pytest.raises(TemporaryError): | ||||
|         api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NetworkError("DeadBeef")) | ||||
|         exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) | ||||
|         exchange.get_order_book(pair='ETH/BTC', limit=50) | ||||
|         exchange.fetch_l2_order_book(pair='ETH/BTC', limit=50) | ||||
|     with pytest.raises(OperationalException): | ||||
|         api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) | ||||
|         exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) | ||||
|         exchange.get_order_book(pair='ETH/BTC', limit=50) | ||||
|         exchange.fetch_l2_order_book(pair='ETH/BTC', limit=50) | ||||
|  | ||||
|  | ||||
| def make_fetch_ohlcv_mock(data): | ||||
|   | ||||
| @@ -3698,7 +3698,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, | ||||
|     default_conf['bid_strategy']['check_depth_of_market']['bids_to_ask_delta'] = 0.1 | ||||
|     patch_RPCManager(mocker) | ||||
|     patch_exchange(mocker) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', order_book_l2) | ||||
|     mocker.patch.multiple( | ||||
|         'freqtrade.exchange.Exchange', | ||||
|         fetch_ticker=ticker, | ||||
| @@ -3735,7 +3735,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o | ||||
|     default_conf['bid_strategy']['check_depth_of_market']['bids_to_ask_delta'] = 100 | ||||
|     patch_RPCManager(mocker) | ||||
|     patch_exchange(mocker) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', order_book_l2) | ||||
|     mocker.patch.multiple( | ||||
|         'freqtrade.exchange.Exchange', | ||||
|         fetch_ticker=ticker, | ||||
| @@ -3760,7 +3760,7 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: | ||||
|     ticker_mock = MagicMock(return_value={'ask': 0.045, 'last': 0.046}) | ||||
|     mocker.patch.multiple( | ||||
|         'freqtrade.exchange.Exchange', | ||||
|         get_order_book=order_book_l2, | ||||
|         fetch_l2_order_book=order_book_l2, | ||||
|         fetch_ticker=ticker_mock, | ||||
|  | ||||
|     ) | ||||
| @@ -3780,7 +3780,7 @@ def test_order_book_bid_strategy_exception(mocker, default_conf, caplog) -> None | ||||
|     ticker_mock = MagicMock(return_value={'ask': 0.042, 'last': 0.046}) | ||||
|     mocker.patch.multiple( | ||||
|         'freqtrade.exchange.Exchange', | ||||
|         get_order_book=MagicMock(return_value={'bids': [[]], 'asks': [[]]}), | ||||
|         fetch_l2_order_book=MagicMock(return_value={'bids': [[]], 'asks': [[]]}), | ||||
|         fetch_ticker=ticker_mock, | ||||
|  | ||||
|     ) | ||||
| @@ -3804,7 +3804,7 @@ def test_check_depth_of_market_buy(default_conf, mocker, order_book_l2) -> None: | ||||
|     patch_exchange(mocker) | ||||
|     mocker.patch.multiple( | ||||
|         'freqtrade.exchange.Exchange', | ||||
|         get_order_book=order_book_l2 | ||||
|         fetch_l2_order_book=order_book_l2 | ||||
|     ) | ||||
|     default_conf['telegram']['enabled'] = False | ||||
|     default_conf['exchange']['name'] = 'binance' | ||||
| @@ -3822,7 +3822,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order | ||||
|     """ | ||||
|     test order book ask strategy | ||||
|     """ | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', order_book_l2) | ||||
|     default_conf['exchange']['name'] = 'binance' | ||||
|     default_conf['ask_strategy']['use_order_book'] = True | ||||
|     default_conf['ask_strategy']['order_book_min'] = 1 | ||||
| @@ -3858,7 +3858,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order | ||||
|     assert freqtrade.handle_trade(trade) is True | ||||
|     assert trade.close_rate_requested == order_book_l2.return_value['asks'][0][0] | ||||
|  | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', | ||||
|                  return_value={'bids': [[]], 'asks': [[]]}) | ||||
|     with pytest.raises(PricingException): | ||||
|         freqtrade.handle_trade(trade) | ||||
| @@ -3904,7 +3904,7 @@ def test_get_sell_rate_orderbook(default_conf, mocker, caplog, side, expected, o | ||||
|     default_conf['ask_strategy']['order_book_min'] = 1 | ||||
|     default_conf['ask_strategy']['order_book_max'] = 2 | ||||
|     pair = "ETH/BTC" | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', order_book_l2) | ||||
|     ft = get_patched_freqtradebot(mocker, default_conf) | ||||
|     rate = ft.get_sell_rate(pair, True) | ||||
|     assert not log_has("Using cached sell rate for ETH/BTC.", caplog) | ||||
| @@ -3923,7 +3923,7 @@ def test_get_sell_rate_orderbook_exception(default_conf, mocker, caplog): | ||||
|     default_conf['ask_strategy']['order_book_max'] = 2 | ||||
|     pair = "ETH/BTC" | ||||
|     # Test What happens if the exchange returns an empty orderbook. | ||||
|     mocker.patch('freqtrade.exchange.Exchange.get_order_book', | ||||
|     mocker.patch('freqtrade.exchange.Exchange.fetch_l2_order_book', | ||||
|                  return_value={'bids': [[]], 'asks': [[]]}) | ||||
|     ft = get_patched_freqtradebot(mocker, default_conf) | ||||
|     with pytest.raises(PricingException): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user