|
|
|
|
@ -452,8 +452,8 @@ def test_min_roi_reached3(default_conf, fee) -> None:
|
|
|
|
|
(0.05, 0.9, ExitType.NONE, None, False, True, 0.09, 0.9, ExitType.NONE,
|
|
|
|
|
lambda **kwargs: None),
|
|
|
|
|
])
|
|
|
|
|
def test_stop_loss_reached(default_conf, fee, profit, adjusted, expected, liq, trailing, custom,
|
|
|
|
|
profit2, adjusted2, expected2, custom_stop) -> None:
|
|
|
|
|
def test_ft_stoploss_reached(default_conf, fee, profit, adjusted, expected, liq, trailing, custom,
|
|
|
|
|
profit2, adjusted2, expected2, custom_stop) -> None:
|
|
|
|
|
|
|
|
|
|
strategy = StrategyResolver.load_strategy(default_conf)
|
|
|
|
|
trade = Trade(
|
|
|
|
|
@ -477,9 +477,9 @@ def test_stop_loss_reached(default_conf, fee, profit, adjusted, expected, liq, t
|
|
|
|
|
|
|
|
|
|
now = arrow.utcnow().datetime
|
|
|
|
|
current_rate = trade.open_rate * (1 + profit)
|
|
|
|
|
sl_flag = strategy.stop_loss_reached(current_rate=current_rate, trade=trade,
|
|
|
|
|
current_time=now, current_profit=profit,
|
|
|
|
|
force_stoploss=0, high=None)
|
|
|
|
|
sl_flag = strategy.ft_stoploss_reached(current_rate=current_rate, trade=trade,
|
|
|
|
|
current_time=now, current_profit=profit,
|
|
|
|
|
force_stoploss=0, high=None)
|
|
|
|
|
assert isinstance(sl_flag, ExitCheckTuple)
|
|
|
|
|
assert sl_flag.exit_type == expected
|
|
|
|
|
if expected == ExitType.NONE:
|
|
|
|
|
@ -489,9 +489,9 @@ def test_stop_loss_reached(default_conf, fee, profit, adjusted, expected, liq, t
|
|
|
|
|
assert round(trade.stop_loss, 2) == adjusted
|
|
|
|
|
current_rate2 = trade.open_rate * (1 + profit2)
|
|
|
|
|
|
|
|
|
|
sl_flag = strategy.stop_loss_reached(current_rate=current_rate2, trade=trade,
|
|
|
|
|
current_time=now, current_profit=profit2,
|
|
|
|
|
force_stoploss=0, high=None)
|
|
|
|
|
sl_flag = strategy.ft_stoploss_reached(current_rate=current_rate2, trade=trade,
|
|
|
|
|
current_time=now, current_profit=profit2,
|
|
|
|
|
force_stoploss=0, high=None)
|
|
|
|
|
assert sl_flag.exit_type == expected2
|
|
|
|
|
if expected2 == ExitType.NONE:
|
|
|
|
|
assert sl_flag.exit_flag is False
|
|
|
|
|
@ -579,7 +579,7 @@ def test_should_sell(default_conf, fee) -> None:
|
|
|
|
|
assert res == [ExitCheckTuple(exit_type=ExitType.ROI)]
|
|
|
|
|
|
|
|
|
|
strategy.min_roi_reached = MagicMock(return_value=True)
|
|
|
|
|
strategy.stop_loss_reached = MagicMock(
|
|
|
|
|
strategy.ft_stoploss_reached = MagicMock(
|
|
|
|
|
return_value=ExitCheckTuple(exit_type=ExitType.STOP_LOSS))
|
|
|
|
|
|
|
|
|
|
res = strategy.should_exit(trade, 1, now,
|
|
|
|
|
@ -603,7 +603,7 @@ def test_should_sell(default_conf, fee) -> None:
|
|
|
|
|
ExitCheckTuple(exit_type=ExitType.ROI),
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
strategy.stop_loss_reached = MagicMock(
|
|
|
|
|
strategy.ft_stoploss_reached = MagicMock(
|
|
|
|
|
return_value=ExitCheckTuple(exit_type=ExitType.TRAILING_STOP_LOSS))
|
|
|
|
|
# Regular exit signal
|
|
|
|
|
res = strategy.should_exit(trade, 1, now,
|
|
|
|
|
|