Use main exchange instead of creating a separate instance.
This commit is contained in:
		| @@ -482,7 +482,6 @@ class Exchange: | |||||||
|  |  | ||||||
|     def reload_markets(self) -> None: |     def reload_markets(self) -> None: | ||||||
|         """Reload markets both sync and async if refresh interval has passed """ |         """Reload markets both sync and async if refresh interval has passed """ | ||||||
|         asyncio.set_event_loop(self.loop) |  | ||||||
|         # Check whether markets have to be reloaded |         # Check whether markets have to be reloaded | ||||||
|         if (self._last_markets_refresh > 0) and ( |         if (self._last_markets_refresh > 0) and ( | ||||||
|                 self._last_markets_refresh + self.markets_refresh_interval |                 self._last_markets_refresh + self.markets_refresh_interval | ||||||
|   | |||||||
| @@ -17,9 +17,9 @@ from sklearn.model_selection import train_test_split | |||||||
| from sklearn.neighbors import NearestNeighbors | from sklearn.neighbors import NearestNeighbors | ||||||
|  |  | ||||||
| from freqtrade.configuration import TimeRange | from freqtrade.configuration import TimeRange | ||||||
|  | from freqtrade.data.dataprovider import DataProvider | ||||||
| from freqtrade.data.history.history_utils import refresh_backtest_ohlcv_data | from freqtrade.data.history.history_utils import refresh_backtest_ohlcv_data | ||||||
| from freqtrade.exceptions import OperationalException | from freqtrade.exceptions import OperationalException | ||||||
| from freqtrade.resolvers import ExchangeResolver |  | ||||||
| from freqtrade.strategy.interface import IStrategy | from freqtrade.strategy.interface import IStrategy | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -895,22 +895,20 @@ class FreqaiDataKitchen: | |||||||
|  |  | ||||||
|         self.model_filename = f"cb_{coin.lower()}_{int(trained_timerange.stopts)}" |         self.model_filename = f"cb_{coin.lower()}_{int(trained_timerange.stopts)}" | ||||||
|  |  | ||||||
|     def download_all_data_for_training(self, timerange: TimeRange) -> None: |     def download_all_data_for_training(self, timerange: TimeRange, dp: DataProvider) -> None: | ||||||
|         """ |         """ | ||||||
|         Called only once upon start of bot to download the necessary data for |         Called only once upon start of bot to download the necessary data for | ||||||
|         populating indicators and training the model. |         populating indicators and training the model. | ||||||
|         :params: |         :param timerange: TimeRange = The full data timerange for populating the indicators | ||||||
|         timerange: TimeRange = The full data timerange for populating the indicators |                                       and training the model. | ||||||
|         and training the model. |         :param dp: DataProvider instance attached to the strategy | ||||||
|         """ |         """ | ||||||
|         exchange = ExchangeResolver.load_exchange( |  | ||||||
|             self.config["exchange"]["name"], self.config, validate=False, load_leverage_tiers=False |  | ||||||
|         ) |  | ||||||
|  |  | ||||||
|         new_pairs_days = int((timerange.stopts - timerange.startts) / SECONDS_IN_DAY) |         new_pairs_days = int((timerange.stopts - timerange.startts) / SECONDS_IN_DAY) | ||||||
|  |         if not dp._exchange: | ||||||
|  |             # Not realistic - this is only called in live mode. | ||||||
|  |             raise OperationalException("Dataprovider did not have an exchange attached.") | ||||||
|         refresh_backtest_ohlcv_data( |         refresh_backtest_ohlcv_data( | ||||||
|             exchange, |             dp._exchange, | ||||||
|             pairs=self.all_pairs, |             pairs=self.all_pairs, | ||||||
|             timeframes=self.freqai_config["feature_parameters"].get("include_timeframes"), |             timeframes=self.freqai_config["feature_parameters"].get("include_timeframes"), | ||||||
|             datadir=self.config["datadir"], |             datadir=self.config["datadir"], | ||||||
| @@ -922,8 +920,6 @@ class FreqaiDataKitchen: | |||||||
|             prepend=self.config.get("prepend_data", False), |             prepend=self.config.get("prepend_data", False), | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         exchange.close() |  | ||||||
|  |  | ||||||
|     def set_all_pairs(self) -> None: |     def set_all_pairs(self) -> None: | ||||||
|  |  | ||||||
|         self.all_pairs = copy.deepcopy( |         self.all_pairs = copy.deepcopy( | ||||||
|   | |||||||
| @@ -273,7 +273,7 @@ class IFreqaiModel(ABC): | |||||||
|                     "corr_pairlist, this may take a while if you do not have the " |                     "corr_pairlist, this may take a while if you do not have the " | ||||||
|                     "data saved" |                     "data saved" | ||||||
|                 ) |                 ) | ||||||
|                 dk.download_all_data_for_training(data_load_timerange) |                 dk.download_all_data_for_training(data_load_timerange, strategy.dp) | ||||||
|                 self.dd.load_all_pair_histories(data_load_timerange, dk) |                 self.dd.load_all_pair_histories(data_load_timerange, dk) | ||||||
|  |  | ||||||
|             if not self.scanning: |             if not self.scanning: | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ def is_arm() -> bool: | |||||||
|     machine = platform.machine() |     machine = platform.machine() | ||||||
|     return "arm" in machine or "aarch64" in machine |     return "arm" in machine or "aarch64" in machine | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_train_model_in_series_LightGBM(mocker, freqai_conf): | def test_train_model_in_series_LightGBM(mocker, freqai_conf): | ||||||
|     freqai_conf.update({"timerange": "20180110-20180130"}) |     freqai_conf.update({"timerange": "20180110-20180130"}) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user