updated a test, put in TODO-lev

This commit is contained in:
Sam Germain 2021-10-07 05:03:38 -06:00
parent 362c29c315
commit 7f7f377a90
2 changed files with 23 additions and 19 deletions

View File

@ -840,6 +840,7 @@ class IStrategy(ABC, HyperStrategyMixin):
else:
logger.warning("CustomStoploss function did not return valid stoploss")
# TODO-lev: short
if self.trailing_stop and trade.stop_loss < (low or current_rate):
# trailing stoploss handling
sl_offset = self.trailing_stop_positive_offset
@ -861,6 +862,7 @@ class IStrategy(ABC, HyperStrategyMixin):
# evaluate if the stoploss was hit if stoploss is not on exchange
# in Dry-Run, this handles stoploss logic as well, as the logic will not be different to
# regular stoploss handling.
# TODO-lev: short
if ((trade.stop_loss >= (low or current_rate)) and
(not self.order_types.get('stoploss_on_exchange') or self.config['dry_run'])):

View File

@ -3565,11 +3565,13 @@ def test_trailing_stop_loss(default_conf_usdt, limit_order_open,
assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
@ pytest.mark.parametrize("is_short", [False, True])
@ pytest.mark.parametrize('offset,trail_if_reached,second_sl', [
(0, False, 2.0394),
(0.011, False, 2.0394),
(0.055, True, 1.8),
@ pytest.mark.parametrize('offset,trail_if_reached,second_sl,is_short', [
# (0, False, 2.0394, False),
# (0.011, False, 2.0394, False),
# (0.055, True, 1.8, False),
(0, False, 2.1606, True),
(0.011, False, 2.1606, True),
(0.055, True, 2.4, True),
])
def test_trailing_stop_loss_positive(
default_conf_usdt, limit_order, limit_order_open,
@ -3581,9 +3583,9 @@ def test_trailing_stop_loss_positive(
mocker.patch.multiple(
'freqtrade.exchange.Exchange',
fetch_ticker=MagicMock(return_value={
'bid': enter_price - 0.01,
'ask': enter_price - 0.01,
'last': enter_price - 0.01
'bid': enter_price - (-0.01 if is_short else 0.01),
'ask': enter_price - (-0.01 if is_short else 0.01),
'last': enter_price - (-0.01 if is_short else 0.01),
}),
create_order=MagicMock(side_effect=[
limit_order_open[enter_side(is_short)],
@ -3614,9 +3616,9 @@ def test_trailing_stop_loss_positive(
mocker.patch(
'freqtrade.exchange.Exchange.fetch_ticker',
MagicMock(return_value={
'bid': enter_price + 0.06,
'ask': enter_price + 0.06,
'last': enter_price + 0.06
'bid': enter_price + (-0.06 if is_short else 0.06),
'ask': enter_price + (-0.06 if is_short else 0.06),
'last': enter_price + (-0.06 if is_short else 0.06),
})
)
# stop-loss not reached, adjusted stoploss
@ -3634,9 +3636,9 @@ def test_trailing_stop_loss_positive(
mocker.patch(
'freqtrade.exchange.Exchange.fetch_ticker',
MagicMock(return_value={
'bid': enter_price + 0.125,
'ask': enter_price + 0.125,
'last': enter_price + 0.125,
'bid': enter_price + (-0.125 if is_short else 0.125),
'ask': enter_price + (-0.125 if is_short else 0.125),
'last': enter_price + (-0.125 if is_short else 0.125),
})
)
assert freqtrade.handle_trade(trade) is False
@ -3649,17 +3651,17 @@ def test_trailing_stop_loss_positive(
mocker.patch(
'freqtrade.exchange.Exchange.fetch_ticker',
MagicMock(return_value={
'bid': enter_price + 0.02,
'ask': enter_price + 0.02,
'last': enter_price + 0.02
'bid': enter_price + (-0.02 if is_short else 0.02),
'ask': enter_price + (-0.02 if is_short else 0.02),
'last': enter_price + (-0.02 if is_short else 0.02),
})
)
# Lower price again (but still positive)
assert freqtrade.handle_trade(trade) is True
assert log_has(
f"ETH/USDT - HIT STOP: current price at {enter_price + 0.02:.6f}, "
f"ETH/USDT - HIT STOP: current price at {enter_price + (-0.02 if is_short else 0.02):.6f}, "
f"stoploss is {trade.stop_loss:.6f}, "
f"initial stoploss was at 1.800000, trade opened at 2.000000", caplog)
f"initial stoploss was at {2.2 if is_short else 1.8}00000, trade opened at 2.000000", caplog)
assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value