Use main exchange instead of creating a separate instance.

This commit is contained in:
Matthias 2022-08-08 18:34:11 +00:00
parent 20b4134787
commit 77b3b8a134
4 changed files with 11 additions and 15 deletions

View File

@ -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

View File

@ -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(

View File

@ -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:

View File

@ -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"})