move price assignment to feature_engineering_standard() to reduce un-requested feature additions in RL. Ensure old method of price assignment still works, add deprecation warning to help users migrate their strategies
This commit is contained in:
parent
2e30bdb9b2
commit
b2bab68fba
@ -283,27 +283,33 @@ class BaseReinforcementLearningModel(IFreqaiModel):
|
|||||||
# %-raw_volume_gen_shift-2_ETH/USDT_1h
|
# %-raw_volume_gen_shift-2_ETH/USDT_1h
|
||||||
# price data for model training and evaluation
|
# price data for model training and evaluation
|
||||||
tf = self.config['timeframe']
|
tf = self.config['timeframe']
|
||||||
ohlc_list = [f'%-raw_open_gen_{pair}_{tf}', f'%-raw_low_gen_{pair}_{tf}',
|
rename_dict = {'%-raw_open': 'open', '%-raw_low': 'low',
|
||||||
f'%-raw_high_gen_{pair}_{tf}', f'%-raw_close_gen_{pair}_{tf}']
|
'%-raw_high': ' high', '%-raw_close': 'close'}
|
||||||
rename_dict = {f'%-raw_open_gen_{pair}_{tf}': 'open',
|
rename_dict_old = {f'%-{pair}raw_open_{tf}': 'open', f'%-{pair}raw_low_{tf}': 'low',
|
||||||
f'%-raw_low_gen_{pair}_{tf}': 'low',
|
f'%-{pair}raw_high_{tf}': ' high', f'%-{pair}raw_close_{tf}': 'close'}
|
||||||
f'%-raw_high_gen_{pair}_{tf}': ' high',
|
|
||||||
f'%-raw_close_gen_{pair}_{tf}': 'close'}
|
|
||||||
|
|
||||||
prices_train = train_df.filter(ohlc_list, axis=1)
|
prices_train = train_df.filter(rename_dict.keys(), axis=1)
|
||||||
if prices_train.empty:
|
prices_train_old = train_df.filter(rename_dict_old.keys(), axis=1)
|
||||||
raise OperationalException('Reinforcement learning module didnt find the raw prices '
|
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(). '
|
'assigned in feature_engineering_standard(). '
|
||||||
'Please assign them with:\n'
|
'Please assign them with:\n'
|
||||||
'dataframe["%-raw_close"] = dataframe["close"]\n'
|
'dataframe["%-raw_close"] = dataframe["close"]\n'
|
||||||
'dataframe["%-raw_open"] = dataframe["open"]\n'
|
'dataframe["%-raw_open"] = dataframe["open"]\n'
|
||||||
'dataframe["%-raw_high"] = dataframe["high"]\n'
|
'dataframe["%-raw_high"] = dataframe["high"]\n'
|
||||||
'dataframe["%-raw_low"] = dataframe["low"]\n'
|
'dataframe["%-raw_low"] = dataframe["low"]\n'
|
||||||
'inside `feature_engineering_expand_basic()`')
|
'inside `feature_engineering_standard()')
|
||||||
|
elif prices_train.empty:
|
||||||
|
raise OperationalException("No prices found, please follow log warning "
|
||||||
|
"instructions to correct the strategy.")
|
||||||
|
|
||||||
prices_train.rename(columns=rename_dict, inplace=True)
|
prices_train.rename(columns=rename_dict, inplace=True)
|
||||||
prices_train.reset_index(drop=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.rename(columns=rename_dict, inplace=True)
|
||||||
prices_test.reset_index(drop=True)
|
prices_test.reset_index(drop=True)
|
||||||
|
|
||||||
|
@ -35,11 +35,6 @@ class freqai_rl_test_strat(IStrategy):
|
|||||||
dataframe["%-pct-change"] = dataframe["close"].pct_change()
|
dataframe["%-pct-change"] = dataframe["close"].pct_change()
|
||||||
dataframe["%-raw_volume"] = dataframe["volume"]
|
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
|
return dataframe
|
||||||
|
|
||||||
def feature_engineering_standard(self, dataframe, **kwargs):
|
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["%-day_of_week"] = dataframe["date"].dt.dayofweek
|
||||||
dataframe["%-hour_of_day"] = dataframe["date"].dt.hour
|
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
|
return dataframe
|
||||||
|
|
||||||
def set_freqai_targets(self, dataframe, **kwargs):
|
def set_freqai_targets(self, dataframe, **kwargs):
|
||||||
|
Loading…
Reference in New Issue
Block a user