diff --git a/freqtrade/freqai/RL/BaseReinforcementLearningModel.py b/freqtrade/freqai/RL/BaseReinforcementLearningModel.py index 4ef2ca9bf..3a4d0d0e6 100644 --- a/freqtrade/freqai/RL/BaseReinforcementLearningModel.py +++ b/freqtrade/freqai/RL/BaseReinforcementLearningModel.py @@ -283,27 +283,33 @@ class BaseReinforcementLearningModel(IFreqaiModel): # %-raw_volume_gen_shift-2_ETH/USDT_1h # price data for model training and evaluation tf = self.config['timeframe'] - ohlc_list = [f'%-raw_open_gen_{pair}_{tf}', f'%-raw_low_gen_{pair}_{tf}', - f'%-raw_high_gen_{pair}_{tf}', f'%-raw_close_gen_{pair}_{tf}'] - rename_dict = {f'%-raw_open_gen_{pair}_{tf}': 'open', - f'%-raw_low_gen_{pair}_{tf}': 'low', - f'%-raw_high_gen_{pair}_{tf}': ' high', - f'%-raw_close_gen_{pair}_{tf}': 'close'} + rename_dict = {'%-raw_open': 'open', '%-raw_low': 'low', + '%-raw_high': ' high', '%-raw_close': 'close'} + rename_dict_old = {f'%-{pair}raw_open_{tf}': 'open', f'%-{pair}raw_low_{tf}': 'low', + f'%-{pair}raw_high_{tf}': ' high', f'%-{pair}raw_close_{tf}': 'close'} + + prices_train = train_df.filter(rename_dict.keys(), axis=1) + prices_train_old = train_df.filter(rename_dict_old.keys(), axis=1) + if prices_train.empty or not prices_train_old.empty: + if not prices_train_old.empty: + prices_train = prices_train_old + rename_dict = rename_dict_old + logger.warning('Reinforcement learning module didnt find the correct raw prices ' + 'assigned in feature_engineering_standard(). ' + 'Please assign them with:\n' + 'dataframe["%-raw_close"] = dataframe["close"]\n' + 'dataframe["%-raw_open"] = dataframe["open"]\n' + 'dataframe["%-raw_high"] = dataframe["high"]\n' + 'dataframe["%-raw_low"] = dataframe["low"]\n' + 'inside `feature_engineering_standard()') + elif prices_train.empty: + raise OperationalException("No prices found, please follow log warning " + "instructions to correct the strategy.") - prices_train = train_df.filter(ohlc_list, axis=1) - if prices_train.empty: - raise OperationalException('Reinforcement learning module didnt find the raw prices ' - 'assigned in feature_engineering_standard(). ' - 'Please assign them with:\n' - 'dataframe["%-raw_close"] = dataframe["close"]\n' - 'dataframe["%-raw_open"] = dataframe["open"]\n' - 'dataframe["%-raw_high"] = dataframe["high"]\n' - 'dataframe["%-raw_low"] = dataframe["low"]\n' - 'inside `feature_engineering_expand_basic()`') prices_train.rename(columns=rename_dict, inplace=True) prices_train.reset_index(drop=True) - prices_test = test_df.filter(ohlc_list, axis=1) + prices_test = test_df.filter(rename_dict.keys(), axis=1) prices_test.rename(columns=rename_dict, inplace=True) prices_test.reset_index(drop=True) diff --git a/tests/strategy/strats/freqai_rl_test_strat.py b/tests/strategy/strats/freqai_rl_test_strat.py index 7f8872d8b..7d0297691 100644 --- a/tests/strategy/strats/freqai_rl_test_strat.py +++ b/tests/strategy/strats/freqai_rl_test_strat.py @@ -35,11 +35,6 @@ class freqai_rl_test_strat(IStrategy): dataframe["%-pct-change"] = dataframe["close"].pct_change() dataframe["%-raw_volume"] = dataframe["volume"] - dataframe["%-raw_close"] = dataframe["close"] - dataframe["%-raw_open"] = dataframe["open"] - dataframe["%-raw_high"] = dataframe["high"] - dataframe["%-raw_low"] = dataframe["low"] - return dataframe def feature_engineering_standard(self, dataframe, **kwargs): @@ -47,6 +42,11 @@ class freqai_rl_test_strat(IStrategy): dataframe["%-day_of_week"] = dataframe["date"].dt.dayofweek dataframe["%-hour_of_day"] = dataframe["date"].dt.hour + dataframe["%-raw_close"] = dataframe["close"] + dataframe["%-raw_open"] = dataframe["open"] + dataframe["%-raw_high"] = dataframe["high"] + dataframe["%-raw_low"] = dataframe["low"] + return dataframe def set_freqai_targets(self, dataframe, **kwargs):