custom_sell -> custom_exit
This commit is contained in:
parent
cd146bfa8f
commit
1917527179
@ -149,7 +149,7 @@
|
|||||||
"trailing_stop_loss": "off",
|
"trailing_stop_loss": "off",
|
||||||
"stop_loss": "off",
|
"stop_loss": "off",
|
||||||
"stoploss_on_exchange": "off",
|
"stoploss_on_exchange": "off",
|
||||||
"custom_sell": "off"
|
"custom_exit": "off"
|
||||||
},
|
},
|
||||||
"sell_fill": "on",
|
"sell_fill": "on",
|
||||||
"buy_cancel": "on",
|
"buy_cancel": "on",
|
||||||
|
@ -90,7 +90,7 @@ Example configuration showing the different settings:
|
|||||||
"trailing_stop_loss": "on",
|
"trailing_stop_loss": "on",
|
||||||
"stop_loss": "on",
|
"stop_loss": "on",
|
||||||
"stoploss_on_exchange": "on",
|
"stoploss_on_exchange": "on",
|
||||||
"custom_sell": "silent"
|
"custom_exit": "silent"
|
||||||
},
|
},
|
||||||
"buy_cancel": "silent",
|
"buy_cancel": "silent",
|
||||||
"sell_cancel": "on",
|
"sell_cancel": "on",
|
||||||
|
@ -12,7 +12,7 @@ class ExitType(Enum):
|
|||||||
SELL_SIGNAL = "sell_signal"
|
SELL_SIGNAL = "sell_signal"
|
||||||
FORCE_EXIT = "force_exit"
|
FORCE_EXIT = "force_exit"
|
||||||
EMERGENCY_EXIT = "emergency_exit"
|
EMERGENCY_EXIT = "emergency_exit"
|
||||||
CUSTOM_SELL = "custom_sell"
|
CUSTOM_EXIT = "custom_exit"
|
||||||
NONE = ""
|
NONE = ""
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -529,7 +529,7 @@ class Backtesting:
|
|||||||
# call the custom exit price,with default value as previous closerate
|
# call the custom exit price,with default value as previous closerate
|
||||||
current_profit = trade.calc_profit_ratio(closerate)
|
current_profit = trade.calc_profit_ratio(closerate)
|
||||||
order_type = self.strategy.order_types['exit']
|
order_type = self.strategy.order_types['exit']
|
||||||
if sell.exit_type in (ExitType.SELL_SIGNAL, ExitType.CUSTOM_SELL):
|
if sell.exit_type in (ExitType.SELL_SIGNAL, ExitType.CUSTOM_EXIT):
|
||||||
# Custom exit pricing only for sell-signals
|
# Custom exit pricing only for sell-signals
|
||||||
if order_type == 'limit':
|
if order_type == 'limit':
|
||||||
closerate = strategy_safe_wrapper(self.strategy.custom_exit_price,
|
closerate = strategy_safe_wrapper(self.strategy.custom_exit_price,
|
||||||
|
@ -895,7 +895,7 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
pair=trade.pair, trade=trade, current_time=current_time,
|
pair=trade.pair, trade=trade, current_time=current_time,
|
||||||
current_rate=current_rate, current_profit=current_profit)
|
current_rate=current_rate, current_profit=current_profit)
|
||||||
if custom_reason:
|
if custom_reason:
|
||||||
exit_signal = ExitType.CUSTOM_SELL
|
exit_signal = ExitType.CUSTOM_EXIT
|
||||||
if isinstance(custom_reason, str):
|
if isinstance(custom_reason, str):
|
||||||
if len(custom_reason) > CUSTOM_EXIT_MAX_LENGTH:
|
if len(custom_reason) > CUSTOM_EXIT_MAX_LENGTH:
|
||||||
logger.warning(f'Custom {trade_type} reason returned from '
|
logger.warning(f'Custom {trade_type} reason returned from '
|
||||||
@ -904,7 +904,7 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
custom_reason = custom_reason[:CUSTOM_EXIT_MAX_LENGTH]
|
custom_reason = custom_reason[:CUSTOM_EXIT_MAX_LENGTH]
|
||||||
else:
|
else:
|
||||||
custom_reason = None
|
custom_reason = None
|
||||||
if exit_signal in (ExitType.CUSTOM_SELL, ExitType.SELL_SIGNAL):
|
if exit_signal in (ExitType.CUSTOM_EXIT, ExitType.SELL_SIGNAL):
|
||||||
logger.debug(f"{trade.pair} - Sell signal received. "
|
logger.debug(f"{trade.pair} - Sell signal received. "
|
||||||
f"exit_type=ExitType.{exit_signal.name}" +
|
f"exit_type=ExitType.{exit_signal.name}" +
|
||||||
(f", custom_reason={custom_reason}" if custom_reason else ""))
|
(f", custom_reason={custom_reason}" if custom_reason else ""))
|
||||||
|
@ -503,15 +503,15 @@ def test_custom_exit(default_conf, fee, caplog) -> None:
|
|||||||
enter=False, exit_=False,
|
enter=False, exit_=False,
|
||||||
low=None, high=None)
|
low=None, high=None)
|
||||||
assert res.exit_flag is True
|
assert res.exit_flag is True
|
||||||
assert res.exit_type == ExitType.CUSTOM_SELL
|
assert res.exit_type == ExitType.CUSTOM_EXIT
|
||||||
assert res.exit_reason == 'custom_sell'
|
assert res.exit_reason == 'custom_exit'
|
||||||
|
|
||||||
strategy.custom_exit = MagicMock(return_value='hello world')
|
strategy.custom_exit = MagicMock(return_value='hello world')
|
||||||
|
|
||||||
res = strategy.should_exit(trade, 1, now,
|
res = strategy.should_exit(trade, 1, now,
|
||||||
enter=False, exit_=False,
|
enter=False, exit_=False,
|
||||||
low=None, high=None)
|
low=None, high=None)
|
||||||
assert res.exit_type == ExitType.CUSTOM_SELL
|
assert res.exit_type == ExitType.CUSTOM_EXIT
|
||||||
assert res.exit_flag is True
|
assert res.exit_flag is True
|
||||||
assert res.exit_reason == 'hello world'
|
assert res.exit_reason == 'hello world'
|
||||||
|
|
||||||
@ -520,7 +520,7 @@ def test_custom_exit(default_conf, fee, caplog) -> None:
|
|||||||
res = strategy.should_exit(trade, 1, now,
|
res = strategy.should_exit(trade, 1, now,
|
||||||
enter=False, exit_=False,
|
enter=False, exit_=False,
|
||||||
low=None, high=None)
|
low=None, high=None)
|
||||||
assert res.exit_type == ExitType.CUSTOM_SELL
|
assert res.exit_type == ExitType.CUSTOM_EXIT
|
||||||
assert res.exit_flag is True
|
assert res.exit_flag is True
|
||||||
assert res.exit_reason == 'h' * 64
|
assert res.exit_reason == 'h' * 64
|
||||||
assert log_has_re('Custom sell reason returned from custom_exit is too long.*', caplog)
|
assert log_has_re('Custom sell reason returned from custom_exit is too long.*', caplog)
|
||||||
|
Loading…
Reference in New Issue
Block a user