fix bug returning multiple targets for training
This commit is contained in:
		| @@ -1066,11 +1066,18 @@ class FreqaiDataKitchen: | |||||||
|         """ |         """ | ||||||
|         dataframe = base_dataframes[self.config["timeframe"]].copy() |         dataframe = base_dataframes[self.config["timeframe"]].copy() | ||||||
|         pairs = self.freqai_config.get("corr_pairlist", []) |         pairs = self.freqai_config.get("corr_pairlist", []) | ||||||
|  |         sgi = True | ||||||
|         for tf in self.freqai_config.get("timeframes"): |         for tf in self.freqai_config.get("timeframes"): | ||||||
|             dataframe = strategy.populate_any_indicators( |             dataframe = strategy.populate_any_indicators( | ||||||
|                 pair, pair, dataframe.copy(), tf, base_dataframes[tf], coin=pair.split("/")[0] + "-" |                 pair, | ||||||
|  |                 pair, | ||||||
|  |                 dataframe.copy(), | ||||||
|  |                 tf, | ||||||
|  |                 base_dataframes[tf], | ||||||
|  |                 coin=pair.split("/")[0] + "-", | ||||||
|  |                 set_generalized_indicators=sgi, | ||||||
|             ) |             ) | ||||||
|  |             sgi = False | ||||||
|             if pairs: |             if pairs: | ||||||
|                 for i in pairs: |                 for i in pairs: | ||||||
|                     if pair in i: |                     if pair in i: | ||||||
|   | |||||||
| @@ -533,7 +533,8 @@ class IStrategy(ABC, HyperStrategyMixin): | |||||||
|         return None |         return None | ||||||
|  |  | ||||||
|     def populate_any_indicators(self, basepair: str, pair: str, df: DataFrame, tf: str, |     def populate_any_indicators(self, basepair: str, pair: str, df: DataFrame, tf: str, | ||||||
|                                 informative: DataFrame = None, coin: str = "") -> DataFrame: |                                 informative: DataFrame = None, coin: str = "", | ||||||
|  |                                 set_generalized_indicators: bool = False) -> DataFrame: | ||||||
|         """ |         """ | ||||||
|         Function designed to automatically generate, name and merge features |         Function designed to automatically generate, name and merge features | ||||||
|         from user indicated timeframes in the configuration file. User can add |         from user indicated timeframes in the configuration file. User can add | ||||||
|   | |||||||
| @@ -70,7 +70,9 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|     def bot_start(self): |     def bot_start(self): | ||||||
|         self.model = CustomModel(self.config) |         self.model = CustomModel(self.config) | ||||||
|  |  | ||||||
|     def populate_any_indicators(self, metadata, pair, df, tf, informative=None, coin=""): |     def populate_any_indicators( | ||||||
|  |         self, metadata, pair, df, tf, informative=None, coin="", set_generalized_indicators=False | ||||||
|  |     ): | ||||||
|         """ |         """ | ||||||
|         Function designed to automatically generate, name and merge features |         Function designed to automatically generate, name and merge features | ||||||
|         from user indicated timeframes in the configuration file. User controls the indicators |         from user indicated timeframes in the configuration file. User controls the indicators | ||||||
| @@ -150,7 +152,7 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|             # Add generalized indicators here (because in live, it will call this |             # Add generalized indicators here (because in live, it will call this | ||||||
|             # function to populate indicators during training). Notice how we ensure not to |             # function to populate indicators during training). Notice how we ensure not to | ||||||
|             # add them multiple times |             # add them multiple times | ||||||
|             if pair == self.freqai_info["corr_pairlist"][0] and tf == self.timeframe: |             if set_generalized_indicators: | ||||||
|                 df["%-day_of_week"] = (df["date"].dt.dayofweek + 1) / 7 |                 df["%-day_of_week"] = (df["date"].dt.dayofweek + 1) / 7 | ||||||
|                 df["%-hour_of_day"] = (df["date"].dt.hour + 1) / 25 |                 df["%-hour_of_day"] = (df["date"].dt.hour + 1) / 25 | ||||||
|  |  | ||||||
| @@ -172,15 +174,21 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|  |  | ||||||
|         self.freqai_info = self.config["freqai"] |         self.freqai_info = self.config["freqai"] | ||||||
|         self.pair = metadata["pair"] |         self.pair = metadata["pair"] | ||||||
|  |         sgi = True | ||||||
|         # the following loops are necessary for building the features |         # the following loops are necessary for building the features | ||||||
|         # indicated by the user in the configuration file. |         # indicated by the user in the configuration file. | ||||||
|         # All indicators must be populated by populate_any_indicators() for live functionality |         # All indicators must be populated by populate_any_indicators() for live functionality | ||||||
|         # to work correctly. |         # to work correctly. | ||||||
|         for tf in self.freqai_info["timeframes"]: |         for tf in self.freqai_info["timeframes"]: | ||||||
|             dataframe = self.populate_any_indicators( |             dataframe = self.populate_any_indicators( | ||||||
|                 metadata, self.pair, dataframe.copy(), tf, coin=self.pair.split("/")[0] + "-" |                 metadata, | ||||||
|  |                 self.pair, | ||||||
|  |                 dataframe.copy(), | ||||||
|  |                 tf, | ||||||
|  |                 coin=self.pair.split("/")[0] + "-", | ||||||
|  |                 set_generalized_indicators=sgi, | ||||||
|             ) |             ) | ||||||
|  |             sgi = False | ||||||
|             for pair in self.freqai_info["corr_pairlist"]: |             for pair in self.freqai_info["corr_pairlist"]: | ||||||
|                 if metadata["pair"] in pair: |                 if metadata["pair"] in pair: | ||||||
|                     continue  # do not include whitelisted pair twice if it is in corr_pairlist |                     continue  # do not include whitelisted pair twice if it is in corr_pairlist | ||||||
| @@ -245,9 +253,9 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) |         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) | ||||||
|  |  | ||||||
|         if not follow_mode: |         if not follow_mode: | ||||||
|             pair_dict = self.model.bridge.data_drawer.pair_dict |             pair_dict = self.model.bridge.dd.pair_dict | ||||||
|         else: |         else: | ||||||
|             pair_dict = self.model.bridge.data_drawer.follower_dict |             pair_dict = self.model.bridge.dd.follower_dict | ||||||
|  |  | ||||||
|         entry_tag = trade.enter_tag |         entry_tag = trade.enter_tag | ||||||
|  |  | ||||||
| @@ -258,9 +266,9 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|             with self.model.bridge.lock: |             with self.model.bridge.lock: | ||||||
|                 pair_dict[pair]["prediction" + entry_tag] = abs(trade_candle["&-s_close"]) |                 pair_dict[pair]["prediction" + entry_tag] = abs(trade_candle["&-s_close"]) | ||||||
|                 if not follow_mode: |                 if not follow_mode: | ||||||
|                     self.model.bridge.data_drawer.save_drawer_to_disk() |                     self.model.bridge.dd.save_drawer_to_disk() | ||||||
|                 else: |                 else: | ||||||
|                     self.model.bridge.data_drawer.save_follower_dict_to_disk() |                     self.model.bridge.dd.save_follower_dict_to_disk() | ||||||
|  |  | ||||||
|         roi_price = pair_dict[pair]["prediction" + entry_tag] |         roi_price = pair_dict[pair]["prediction" + entry_tag] | ||||||
|         roi_time = self.max_roi_time_long.value |         roi_time = self.max_roi_time_long.value | ||||||
| @@ -295,16 +303,16 @@ class FreqaiExampleStrategy(IStrategy): | |||||||
|         entry_tag = trade.enter_tag |         entry_tag = trade.enter_tag | ||||||
|         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) |         follow_mode = self.config.get("freqai", {}).get("follow_mode", False) | ||||||
|         if not follow_mode: |         if not follow_mode: | ||||||
|             pair_dict = self.model.bridge.data_drawer.pair_dict |             pair_dict = self.model.bridge.dd.pair_dict | ||||||
|         else: |         else: | ||||||
|             pair_dict = self.model.bridge.data_drawer.follower_dict |             pair_dict = self.model.bridge.dd.follower_dict | ||||||
|  |  | ||||||
|         with self.model.bridge.lock: |         with self.model.bridge.lock: | ||||||
|             pair_dict[pair]["prediction" + entry_tag] = 0 |             pair_dict[pair]["prediction" + entry_tag] = 0 | ||||||
|             if not follow_mode: |             if not follow_mode: | ||||||
|                 self.model.bridge.data_drawer.save_drawer_to_disk() |                 self.model.bridge.dd.save_drawer_to_disk() | ||||||
|             else: |             else: | ||||||
|                 self.model.bridge.data_drawer.save_follower_dict_to_disk() |                 self.model.bridge.dd.save_follower_dict_to_disk() | ||||||
|  |  | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user