Implement enter_tag initialization to avoid futures warning

This commit is contained in:
Matthias
2024-01-14 14:33:47 +01:00
parent e967dfa145
commit 393df83a91
4 changed files with 11 additions and 8 deletions
+4 -1
View File
@@ -1388,7 +1388,8 @@ class IStrategy(ABC, HyperStrategyMixin):
""" """
logger.debug(f"Populating enter signals for pair {metadata.get('pair')}.") logger.debug(f"Populating enter signals for pair {metadata.get('pair')}.")
# Initialize column to work around Pandas bug #56503.
dataframe.loc[:, 'enter_tag'] = ''
df = self.populate_entry_trend(dataframe, metadata) df = self.populate_entry_trend(dataframe, metadata)
if 'enter_long' not in df.columns: if 'enter_long' not in df.columns:
df = df.rename({'buy': 'enter_long', 'buy_tag': 'enter_tag'}, axis='columns') df = df.rename({'buy': 'enter_long', 'buy_tag': 'enter_tag'}, axis='columns')
@@ -1404,6 +1405,8 @@ class IStrategy(ABC, HyperStrategyMixin):
currently traded pair currently traded pair
:return: DataFrame with exit column :return: DataFrame with exit column
""" """
# Initialize column to work around Pandas bug #56503.
dataframe.loc[:, 'exit_tag'] = ''
logger.debug(f"Populating exit signals for pair {metadata.get('pair')}.") logger.debug(f"Populating exit signals for pair {metadata.get('pair')}.")
df = self.populate_exit_trend(dataframe, metadata) df = self.populate_exit_trend(dataframe, metadata)
if 'exit_long' not in df.columns: if 'exit_long' not in df.columns:
+1 -1
View File
@@ -734,7 +734,7 @@ def test_backtest_one(default_conf, fee, mocker, testdatadir) -> None:
'min_rate': [0.10370188, 0.10300000000000001], 'min_rate': [0.10370188, 0.10300000000000001],
'max_rate': [0.10501, 0.1038888], 'max_rate': [0.10501, 0.1038888],
'is_open': [False, False], 'is_open': [False, False],
'enter_tag': [None, None], 'enter_tag': ['', ''],
"leverage": [1.0, 1.0], "leverage": [1.0, 1.0],
"is_short": [False, False], "is_short": [False, False],
'open_timestamp': [1517251200000, 1517283000000], 'open_timestamp': [1517251200000, 1517283000000],
@@ -72,7 +72,7 @@ def test_backtest_position_adjustment(default_conf, fee, mocker, testdatadir) ->
'min_rate': [0.10370188, 0.10300000000000001], 'min_rate': [0.10370188, 0.10300000000000001],
'max_rate': [0.10481985, 0.1038888], 'max_rate': [0.10481985, 0.1038888],
'is_open': [False, False], 'is_open': [False, False],
'enter_tag': [None, None], 'enter_tag': ['', ''],
'leverage': [1.0, 1.0], 'leverage': [1.0, 1.0],
'is_short': [False, False], 'is_short': [False, False],
'open_timestamp': [1517251200000, 1517283000000], 'open_timestamp': [1517251200000, 1517283000000],
+5 -5
View File
@@ -1023,9 +1023,9 @@ def test_auto_hyperopt_interface_loadparams(default_conf, mocker, caplog):
@pytest.mark.parametrize('function,raises', [ @pytest.mark.parametrize('function,raises', [
('populate_entry_trend', True), ('populate_entry_trend', True),
('advise_entry', True), ('advise_entry', False),
('populate_exit_trend', True), ('populate_exit_trend', True),
('advise_exit', True), ('advise_exit', False),
]) ])
def test_pandas_warning_direct(ohlcv_history, function, raises): def test_pandas_warning_direct(ohlcv_history, function, raises):
@@ -1041,8 +1041,8 @@ def test_pandas_warning_direct(ohlcv_history, function, raises):
getattr(_STRATEGY, function)(df, {'pair': 'ETH/BTC'}) getattr(_STRATEGY, function)(df, {'pair': 'ETH/BTC'})
def test_pandas_warning_through_analyze_pair(ohlcv_history, mocker): def test_pandas_warning_through_analyze_pair(ohlcv_history, mocker, recwarn):
mocker.patch.object(_STRATEGY.dp, 'ohlcv', return_value=ohlcv_history) mocker.patch.object(_STRATEGY.dp, 'ohlcv', return_value=ohlcv_history)
with pytest.warns(FutureWarning): _STRATEGY.analyze_pair('ETH/BTC')
_STRATEGY.analyze_pair('ETH/BTC') assert len(recwarn) == 0