ignore_roi_if_buy_signal -> ignore_roi_if_enter_signal

This commit is contained in:
Sam Germain 2022-01-04 22:49:49 -06:00
parent 86cc911559
commit b09ac3e5b6
14 changed files with 32 additions and 32 deletions

View File

@ -118,7 +118,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `use_exit_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `sell_profit_only` | Wait until the bot reaches `sell_profit_offset` before taking a sell decision. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `sell_profit_offset` | Sell-signal is only active above this value. Only active in combination with `sell_profit_only=True`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0`.* <br> **Datatype:** Float (as ratio)
| `ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_exit_signal`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `ignore_roi_if_enter_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_exit_signal`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `ignore_buying_expired_candle_after` | Specifies the number of seconds until a buy signal is no longer used. <br> **Datatype:** Integer
| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Dict
| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Dict
@ -196,7 +196,7 @@ Values set in the configuration file always overwrite values set in the strategy
* `use_exit_signal`
* `sell_profit_only`
* `sell_profit_offset`
* `ignore_roi_if_buy_signal`
* `ignore_roi_if_enter_signal`
* `ignore_buying_expired_candle_after`
### Configuring amount per trade

View File

@ -77,8 +77,8 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None:
None, 'sell_profit_only')
process_deprecated_setting(config, 'ask_strategy', 'sell_profit_offset',
None, 'sell_profit_offset')
process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal',
None, 'ignore_roi_if_buy_signal')
process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_enter_signal',
None, 'ignore_roi_if_enter_signal')
process_deprecated_setting(config, 'ask_strategy', 'ignore_buying_expired_candle_after',
None, 'ignore_buying_expired_candle_after')
@ -87,8 +87,8 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None:
None, 'use_exit_signal')
process_removed_setting(config, 'experimental', 'sell_profit_only',
None, 'sell_profit_only')
process_removed_setting(config, 'experimental', 'ignore_roi_if_buy_signal',
None, 'ignore_roi_if_buy_signal')
process_removed_setting(config, 'experimental', 'ignore_roi_if_enter_signal',
None, 'ignore_roi_if_enter_signal')
if (config.get('edge', {}).get('enabled', False)
and 'capital_available_percentage' in config.get('edge', {})):

View File

@ -150,7 +150,7 @@ CONF_SCHEMA = {
'use_exit_signal': {'type': 'boolean'},
'sell_profit_only': {'type': 'boolean'},
'sell_profit_offset': {'type': 'number'},
'ignore_roi_if_buy_signal': {'type': 'boolean'},
'ignore_roi_if_enter_signal': {'type': 'boolean'},
'ignore_buying_expired_candle_after': {'type': 'number'},
'trading_mode': {'type': 'string', 'enum': TRADING_MODES},
'collateral_type': {'type': 'string', 'enum': COLLATERAL_TYPES},

View File

@ -865,7 +865,7 @@ class FreqtradeBot(LoggingMixin):
# TODO-lev: change to use_exit_signal, ignore_roi_if_enter_signal
if (self.config.get('use_exit_signal', True) or
self.config.get('ignore_roi_if_buy_signal', False)):
self.config.get('ignore_roi_if_enter_signal', False)):
analyzed_df, _ = self.dataprovider.get_analyzed_dataframe(trade.pair,
self.strategy.timeframe)

View File

@ -462,7 +462,7 @@ def generate_strategy_stats(btdata: Dict[str, DataFrame],
'use_exit_signal': config['use_exit_signal'],
'sell_profit_only': config['sell_profit_only'],
'sell_profit_offset': config['sell_profit_offset'],
'ignore_roi_if_buy_signal': config['ignore_roi_if_buy_signal'],
'ignore_roi_if_enter_signal': config['ignore_roi_if_enter_signal'],
**daily_stats,
**trade_stats
}

View File

@ -93,7 +93,7 @@ class StrategyResolver(IResolver):
("unfilledtimeout", None),
("use_exit_signal", True),
("sell_profit_only", False),
("ignore_roi_if_buy_signal", False),
("ignore_roi_if_enter_signal", False),
("sell_profit_offset", 0.0),
("disable_dataframe_checks", False),
("ignore_buying_expired_candle_after", 0)

View File

@ -104,7 +104,7 @@ class IStrategy(ABC, HyperStrategyMixin):
use_exit_signal: bool
sell_profit_only: bool
sell_profit_offset: float
ignore_roi_if_buy_signal: bool
ignore_roi_if_enter_signal: bool
# Number of seconds after which the candle will no longer result in a buy on expired candles
ignore_buying_expired_candle_after: int = 0
@ -780,7 +780,7 @@ class IStrategy(ABC, HyperStrategyMixin):
current_profit = trade.calc_profit_ratio(current_rate)
# if enter signal and ignore_roi is set, we don't need to evaluate min_roi.
roi_reached = (not (enter and self.ignore_roi_if_buy_signal)
roi_reached = (not (enter and self.ignore_roi_if_enter_signal)
and self.min_roi_reached(trade=trade, current_profit=current_profit,
current_time=date))

View File

@ -64,7 +64,7 @@ class {{ strategy }}(IStrategy):
# These values can be overridden in the "ask_strategy" section in the config.
use_exit_signal = True
sell_profit_only = False
ignore_roi_if_buy_signal = False
ignore_roi_if_enter_signal = False
# Number of candles the strategy requires before producing valid signals
startup_candle_count: int = 30

View File

@ -69,7 +69,7 @@ class SampleShortStrategy(IStrategy):
# These values can be overridden in the "ask_strategy" section in the config.
use_exit_signal = True
sell_profit_only = False
ignore_roi_if_buy_signal = False
ignore_roi_if_enter_signal = False
# Number of candles the strategy requires before producing valid signals
startup_candle_count: int = 30

View File

@ -70,7 +70,7 @@ class SampleStrategy(IStrategy):
# These values can be overridden in the "ask_strategy" section in the config.
use_exit_signal = True
sell_profit_only = False
ignore_roi_if_buy_signal = False
ignore_roi_if_enter_signal = False
# Number of candles the strategy requires before producing valid signals
startup_candle_count: int = 30

View File

@ -988,7 +988,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir):
"use_exit_signal": True,
"sell_profit_only": False,
"sell_profit_offset": 0.0,
"ignore_roi_if_buy_signal": False,
"ignore_roi_if_enter_signal": False,
})
patch_exchange(mocker)
backtestmock = MagicMock(return_value={
@ -1063,7 +1063,7 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat
"use_exit_signal": True,
"sell_profit_only": False,
"sell_profit_offset": 0.0,
"ignore_roi_if_buy_signal": False,
"ignore_roi_if_enter_signal": False,
})
patch_exchange(mocker)
result1 = pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC'],
@ -1175,7 +1175,7 @@ def test_backtest_start_multi_strat_nomock_detail(default_conf, mocker,
"use_exit_signal": True,
"sell_profit_only": False,
"sell_profit_offset": 0.0,
"ignore_roi_if_buy_signal": False,
"ignore_roi_if_enter_signal": False,
})
patch_exchange(mocker)
result1 = pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC'],

View File

@ -1124,8 +1124,8 @@ def test_pairlist_resolving_fallback(mocker):
None, "sell_profit_only", False),
("ask_strategy", "sell_profit_offset", 0.1,
None, "sell_profit_offset", 0.01),
("ask_strategy", "ignore_roi_if_buy_signal", True,
None, "ignore_roi_if_buy_signal", False),
("ask_strategy", "ignore_roi_if_enter_signal", True,
None, "ignore_roi_if_enter_signal", False),
("ask_strategy", "ignore_buying_expired_candle_after", 5,
None, "ignore_buying_expired_candle_after", 6),
])
@ -1170,7 +1170,7 @@ def test_process_temporary_deprecated_settings(mocker, default_conf, setting, ca
@pytest.mark.parametrize("setting", [
("experimental", "use_exit_signal", False),
("experimental", "sell_profit_only", True),
("experimental", "ignore_roi_if_buy_signal", True),
("experimental", "ignore_roi_if_enter_signal", True),
])
def test_process_removed_settings(mocker, default_conf, setting):
patched_configuration_load_config_file(mocker, default_conf)

View File

@ -3574,8 +3574,8 @@ def test_locked_pairs(default_conf_usdt, ticker_usdt, fee,
@pytest.mark.parametrize("is_short", [False, True])
def test_ignore_roi_if_buy_signal(default_conf_usdt, limit_order, limit_order_open, is_short,
fee, mocker) -> None:
def test_ignore_roi_if_enter_signal(default_conf_usdt, limit_order, limit_order_open, is_short,
fee, mocker) -> None:
patch_RPCManager(mocker)
patch_exchange(mocker)
mocker.patch.multiple(
@ -3591,7 +3591,7 @@ def test_ignore_roi_if_buy_signal(default_conf_usdt, limit_order, limit_order_op
]),
get_fee=fee,
)
default_conf_usdt['ignore_roi_if_buy_signal'] = True
default_conf_usdt['ignore_roi_if_enter_signal'] = True
freqtrade = FreqtradeBot(default_conf_usdt)
patch_get_signal(freqtrade, enter_short=is_short, enter_long=not is_short)
@ -3786,8 +3786,8 @@ def test_trailing_stop_loss_positive(
@pytest.mark.parametrize("is_short", [False, True])
def test_disable_ignore_roi_if_buy_signal(default_conf_usdt, limit_order, limit_order_open,
is_short, fee, mocker) -> None:
def test_disable_ignore_roi_if_enter_signal(default_conf_usdt, limit_order, limit_order_open,
is_short, fee, mocker) -> None:
patch_RPCManager(mocker)
patch_exchange(mocker)
mocker.patch.multiple(
@ -3806,7 +3806,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf_usdt, limit_order, limit_
_is_dry_limit_order_filled=MagicMock(return_value=False),
)
default_conf_usdt['ask_strategy'] = {
'ignore_roi_if_buy_signal': False
'ignore_roi_if_enter_signal': False
}
freqtrade = FreqtradeBot(default_conf_usdt)
patch_get_signal(freqtrade, enter_short=is_short, enter_long=not is_short)

File diff suppressed because one or more lines are too long