Add tests for new naming definitions
This commit is contained in:
parent
a09637cbe1
commit
8d95e76d26
@ -173,6 +173,12 @@ class StrategyResolver(IResolver):
|
|||||||
def validate_strategy(strategy: IStrategy) -> IStrategy:
|
def validate_strategy(strategy: IStrategy) -> IStrategy:
|
||||||
if strategy.config.get('trading_mode', TradingMode.SPOT) != TradingMode.SPOT:
|
if strategy.config.get('trading_mode', TradingMode.SPOT) != TradingMode.SPOT:
|
||||||
# Require new method
|
# Require new method
|
||||||
|
warn_deprecated_setting(strategy, 'sell_profit_only', 'exit_profit_only', True)
|
||||||
|
warn_deprecated_setting(strategy, 'sell_profit_offset', 'exit_profit_offset', True)
|
||||||
|
warn_deprecated_setting(strategy, 'use_sell_signal', 'use_exit_signal', True)
|
||||||
|
warn_deprecated_setting(strategy, 'ignore_roi_if_buy_signal',
|
||||||
|
'ignore_roi_if_entry_signal', True)
|
||||||
|
|
||||||
if not check_override(strategy, IStrategy, 'populate_entry_trend'):
|
if not check_override(strategy, IStrategy, 'populate_entry_trend'):
|
||||||
raise OperationalException("`populate_entry_trend` must be implemented.")
|
raise OperationalException("`populate_entry_trend` must be implemented.")
|
||||||
if not check_override(strategy, IStrategy, 'populate_exit_trend'):
|
if not check_override(strategy, IStrategy, 'populate_exit_trend'):
|
||||||
@ -187,11 +193,7 @@ class StrategyResolver(IResolver):
|
|||||||
if check_override(strategy, IStrategy, 'custom_sell'):
|
if check_override(strategy, IStrategy, 'custom_sell'):
|
||||||
raise OperationalException(
|
raise OperationalException(
|
||||||
"Please migrate your implementation of `custom_sell` to `custom_exit`.")
|
"Please migrate your implementation of `custom_sell` to `custom_exit`.")
|
||||||
warn_deprecated_setting(strategy, 'sell_profit_only', 'exit_profit_only', True)
|
|
||||||
warn_deprecated_setting(strategy, 'sell_profit_offset', 'exit_profit_offset', True)
|
|
||||||
warn_deprecated_setting(strategy, 'use_sell_signal', 'use_exit_signal', True)
|
|
||||||
warn_deprecated_setting(strategy, 'ignore_roi_if_buy_signal',
|
|
||||||
'ignore_roi_if_entry_signal', True)
|
|
||||||
else:
|
else:
|
||||||
# TODO: Implementing one of the following methods should show a deprecation warning
|
# TODO: Implementing one of the following methods should show a deprecation warning
|
||||||
# buy_trend and sell_trend, custom_sell
|
# buy_trend and sell_trend, custom_sell
|
||||||
|
@ -50,6 +50,8 @@ class StrategyTestV2(IStrategy):
|
|||||||
'entry': 'gtc',
|
'entry': 'gtc',
|
||||||
'exit': 'gtc',
|
'exit': 'gtc',
|
||||||
}
|
}
|
||||||
|
# Test legacy use_sell_signal definition
|
||||||
|
use_sell_signal = False
|
||||||
|
|
||||||
# By default this strategy does not use Position Adjustments
|
# By default this strategy does not use Position Adjustments
|
||||||
position_adjustment_enable = False
|
position_adjustment_enable = False
|
||||||
|
@ -143,16 +143,6 @@ def test_strategy_can_short(caplog, default_conf):
|
|||||||
assert isinstance(strat, IStrategy)
|
assert isinstance(strat, IStrategy)
|
||||||
|
|
||||||
|
|
||||||
def test_strategy_implements_populate_entry(caplog, default_conf):
|
|
||||||
caplog.set_level(logging.INFO)
|
|
||||||
default_conf.update({
|
|
||||||
'strategy': "StrategyTestV2",
|
|
||||||
})
|
|
||||||
default_conf['trading_mode'] = 'futures'
|
|
||||||
with pytest.raises(OperationalException, match="`populate_entry_trend` must be implemented."):
|
|
||||||
StrategyResolver.load_strategy(default_conf)
|
|
||||||
|
|
||||||
|
|
||||||
def test_strategy_override_minimal_roi(caplog, default_conf):
|
def test_strategy_override_minimal_roi(caplog, default_conf):
|
||||||
caplog.set_level(logging.INFO)
|
caplog.set_level(logging.INFO)
|
||||||
default_conf.update({
|
default_conf.update({
|
||||||
@ -391,7 +381,22 @@ def test_deprecate_populate_indicators(result, default_conf):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.filterwarnings("ignore:deprecated")
|
@pytest.mark.filterwarnings("ignore:deprecated")
|
||||||
def test_missing_implements(default_conf):
|
def test_missing_implements(default_conf, caplog):
|
||||||
|
|
||||||
|
default_location = Path(__file__).parent / "strats"
|
||||||
|
default_conf.update({'strategy': 'StrategyTestV2',
|
||||||
|
'strategy_path': default_location})
|
||||||
|
StrategyResolver.load_strategy(default_conf)
|
||||||
|
|
||||||
|
log_has_re(r"DEPRECATED: .*use_sell_signal.*use_exit_signal.", caplog)
|
||||||
|
|
||||||
|
default_conf['trading_mode'] = 'futures'
|
||||||
|
with pytest.raises(OperationalException,
|
||||||
|
match=r"DEPRECATED: .*use_sell_signal.*use_exit_signal."):
|
||||||
|
StrategyResolver.load_strategy(default_conf)
|
||||||
|
|
||||||
|
default_conf['trading_mode'] = 'spot'
|
||||||
|
|
||||||
default_location = Path(__file__).parent / "strats/broken_strats"
|
default_location = Path(__file__).parent / "strats/broken_strats"
|
||||||
default_conf.update({'strategy': 'TestStrategyNoImplements',
|
default_conf.update({'strategy': 'TestStrategyNoImplements',
|
||||||
'strategy_path': default_location})
|
'strategy_path': default_location})
|
||||||
|
Loading…
Reference in New Issue
Block a user