fix bug returning multiple targets for training
This commit is contained in:
parent
ffb39a5029
commit
4ff0ef7359
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user