Remove freqAI model bridge in favor of self.freqai
				
					
				
			This commit is contained in:
		| @@ -1,12 +0,0 @@ | ||||
| from freqtrade.resolvers.freqaimodel_resolver import FreqaiModelResolver | ||||
|  | ||||
|  | ||||
| class CustomModel: | ||||
|     """ | ||||
|     A bridge between the user defined IFreqaiModel class | ||||
|     and the strategy. | ||||
|     """ | ||||
|  | ||||
|     def __init__(self, config): | ||||
|  | ||||
|         self.bridge = FreqaiModelResolver.load_freqaimodel(config) | ||||
| @@ -145,11 +145,20 @@ class IStrategy(ABC, HyperStrategyMixin): | ||||
|                     informative_data.candle_type = config['candle_type_def'] | ||||
|                 self._ft_informative.append((informative_data, cls_method)) | ||||
|  | ||||
|     def load_freqAI_model(self) -> None: | ||||
|         if self.config.get('freqai', None): | ||||
|             # Import here to avoid importing this if freqAI is disabled | ||||
|             from freqtrade.resolvers.freqaimodel_resolver import FreqaiModelResolver | ||||
|  | ||||
|             self.freqai = FreqaiModelResolver.load_freqaimodel(self.config) | ||||
|  | ||||
|     def ft_bot_start(self, **kwargs) -> None: | ||||
|         """ | ||||
|         Strategy init - runs after dataprovider has been added. | ||||
|         Must call bot_start() | ||||
|         """ | ||||
|         self.load_freqAI_model() | ||||
|  | ||||
|         strategy_safe_wrapper(self.bot_start)() | ||||
|  | ||||
|         self.ft_load_hyper_params(self.config.get('runmode') == RunMode.HYPEROPT) | ||||
|   | ||||
| @@ -7,7 +7,6 @@ from pandas import DataFrame | ||||
| from technical import qtpylib | ||||
|  | ||||
| from freqtrade.exchange import timeframe_to_prev_date | ||||
| from freqtrade.freqai.strategy_bridge import CustomModel | ||||
| from freqtrade.persistence import Trade | ||||
| from freqtrade.strategy import DecimalParameter, IntParameter, merge_informative_pair | ||||
| from freqtrade.strategy.interface import IStrategy | ||||
| @@ -21,7 +20,7 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|     Example strategy showing how the user connects their own | ||||
|     IFreqaiModel to the strategy. Namely, the user uses: | ||||
|     self.model = CustomModel(self.config) | ||||
|     self.model.bridge.start(dataframe, metadata) | ||||
|     self.freqai.start(dataframe, metadata) | ||||
|  | ||||
|     to make predictions on their data. populate_any_indicators() automatically | ||||
|     generates the variety of features indicated by the user in the | ||||
| @@ -67,9 +66,6 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|                 informative_pairs.append((pair, tf)) | ||||
|         return informative_pairs | ||||
|  | ||||
|     def bot_start(self): | ||||
|         self.model = CustomModel(self.config) | ||||
|  | ||||
|     def populate_any_indicators( | ||||
|         self, metadata, pair, df, tf, informative=None, coin="", set_generalized_indicators=False | ||||
|     ): | ||||
| @@ -88,7 +84,7 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|         :coin: the name of the coin which will modify the feature names. | ||||
|         """ | ||||
|  | ||||
|         with self.model.bridge.lock: | ||||
|         with self.freqai.lock: | ||||
|             if informative is None: | ||||
|                 informative = self.dp.get_pair_dataframe(pair, tf) | ||||
|  | ||||
| @@ -180,7 +176,7 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|         # the target mean/std values for each of the labels created by user in | ||||
|         # `populate_any_indicators()` for each training period. | ||||
|  | ||||
|         dataframe = self.model.bridge.start(dataframe, metadata, self) | ||||
|         dataframe = self.freqai.start(dataframe, metadata, self) | ||||
|  | ||||
|         dataframe["target_roi"] = dataframe["&-s_close_mean"] + dataframe["&-s_close_std"] * 1.25 | ||||
|         dataframe["sell_roi"] = dataframe["&-s_close_mean"] - dataframe["&-s_close_std"] * 1.25 | ||||
| @@ -234,9 +230,9 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) | ||||
|  | ||||
|         if not follow_mode: | ||||
|             pair_dict = self.model.bridge.dd.pair_dict | ||||
|             pair_dict = self.freqai.dd.pair_dict | ||||
|         else: | ||||
|             pair_dict = self.model.bridge.dd.follower_dict | ||||
|             pair_dict = self.freqai.dd.follower_dict | ||||
|  | ||||
|         entry_tag = trade.enter_tag | ||||
|  | ||||
| @@ -244,12 +240,12 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|             "prediction" + entry_tag not in pair_dict[pair] | ||||
|             or pair_dict[pair]["prediction" + entry_tag] > 0 | ||||
|         ): | ||||
|             with self.model.bridge.lock: | ||||
|             with self.freqai.lock: | ||||
|                 pair_dict[pair]["prediction" + entry_tag] = abs(trade_candle["&-s_close"]) | ||||
|                 if not follow_mode: | ||||
|                     self.model.bridge.dd.save_drawer_to_disk() | ||||
|                     self.freqai.dd.save_drawer_to_disk() | ||||
|                 else: | ||||
|                     self.model.bridge.dd.save_follower_dict_to_disk() | ||||
|                     self.freqai.dd.save_follower_dict_to_disk() | ||||
|  | ||||
|         roi_price = pair_dict[pair]["prediction" + entry_tag] | ||||
|         roi_time = self.max_roi_time_long.value | ||||
| @@ -284,16 +280,16 @@ class FreqaiExampleStrategy(IStrategy): | ||||
|         entry_tag = trade.enter_tag | ||||
|         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) | ||||
|         if not follow_mode: | ||||
|             pair_dict = self.model.bridge.dd.pair_dict | ||||
|             pair_dict = self.freqai.dd.pair_dict | ||||
|         else: | ||||
|             pair_dict = self.model.bridge.dd.follower_dict | ||||
|             pair_dict = self.freqai.dd.follower_dict | ||||
|  | ||||
|         with self.model.bridge.lock: | ||||
|         with self.freqai.lock: | ||||
|             pair_dict[pair]["prediction" + entry_tag] = 0 | ||||
|             if not follow_mode: | ||||
|                 self.model.bridge.dd.save_drawer_to_disk() | ||||
|                 self.freqai.dd.save_drawer_to_disk() | ||||
|             else: | ||||
|                 self.model.bridge.dd.save_follower_dict_to_disk() | ||||
|                 self.freqai.dd.save_follower_dict_to_disk() | ||||
|  | ||||
|         return True | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,6 @@ import pandas as pd | ||||
| import talib.abstract as ta | ||||
| from pandas import DataFrame | ||||
|  | ||||
| from freqtrade.freqai.strategy_bridge import CustomModel | ||||
| from freqtrade.strategy import DecimalParameter, IntParameter, merge_informative_pair | ||||
| from freqtrade.strategy.interface import IStrategy | ||||
|  | ||||
| @@ -18,7 +17,7 @@ class freqai_test_strat(IStrategy): | ||||
|     Example strategy showing how the user connects their own | ||||
|     IFreqaiModel to the strategy. Namely, the user uses: | ||||
|     self.model = CustomModel(self.config) | ||||
|     self.model.bridge.start(dataframe, metadata) | ||||
|     self.freqai.start(dataframe, metadata) | ||||
|  | ||||
|     to make predictions on their data. populate_any_indicators() automatically | ||||
|     generates the variety of features indicated by the user in the | ||||
| @@ -64,9 +63,6 @@ class freqai_test_strat(IStrategy): | ||||
|                 informative_pairs.append((pair, tf)) | ||||
|         return informative_pairs | ||||
|  | ||||
|     def bot_start(self): | ||||
|         self.model = CustomModel(self.config) | ||||
|  | ||||
|     def populate_any_indicators( | ||||
|         self, metadata, pair, df, tf, informative=None, coin="", set_generalized_indicators=False | ||||
|     ): | ||||
| @@ -85,7 +81,7 @@ class freqai_test_strat(IStrategy): | ||||
|         :coin: the name of the coin which will modify the feature names. | ||||
|         """ | ||||
|  | ||||
|         with self.model.bridge.lock: | ||||
|         with self.freqai.lock: | ||||
|             if informative is None: | ||||
|                 informative = self.dp.get_pair_dataframe(pair, tf) | ||||
|  | ||||
| @@ -146,7 +142,7 @@ class freqai_test_strat(IStrategy): | ||||
|         # the model will return 4 values, its prediction, an indication of whether or not the | ||||
|         # prediction should be accepted, the target mean/std values from the labels used during | ||||
|         # each training period. | ||||
|         dataframe = self.model.bridge.start(dataframe, metadata, self) | ||||
|         dataframe = self.freqai.start(dataframe, metadata, self) | ||||
|  | ||||
|         dataframe["target_roi"] = dataframe["&-s_close_mean"] + dataframe["&-s_close_std"] * 1.25 | ||||
|         dataframe["sell_roi"] = dataframe["&-s_close_mean"] - dataframe["&-s_close_std"] * 1.25 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user