mirror of
https://github.com/freqtrade/freqtrade.git
synced 2024-11-14 04:03:55 +00:00
Simplify and fix handle_stoploss_on_exchange test
This commit is contained in:
parent
ce63eb30a2
commit
f3da2c6fd8
|
@ -1160,9 +1160,9 @@ def test_handle_stoploss_on_exchange(mocker, default_conf_usdt, fee, caplog, is_
|
||||||
|
|
||||||
freqtrade.enter_positions()
|
freqtrade.enter_positions()
|
||||||
trade = Trade.session.scalars(select(Trade)).first()
|
trade = Trade.session.scalars(select(Trade)).first()
|
||||||
trade.is_short = is_short
|
assert trade.is_short == is_short
|
||||||
trade.is_open = True
|
assert trade.is_open
|
||||||
trade.stoploss_order_id = None
|
assert trade.stoploss_order_id is None
|
||||||
|
|
||||||
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
||||||
assert stoploss.call_count == 1
|
assert stoploss.call_count == 1
|
||||||
|
@ -1170,34 +1170,21 @@ def test_handle_stoploss_on_exchange(mocker, default_conf_usdt, fee, caplog, is_
|
||||||
|
|
||||||
# Second case: when stoploss is set but it is not yet hit
|
# Second case: when stoploss is set but it is not yet hit
|
||||||
# should do nothing and return false
|
# should do nothing and return false
|
||||||
stop_order_dict.update({'id': "102"})
|
|
||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.stoploss_order_id = "102"
|
|
||||||
trade.orders.append(
|
|
||||||
Order(
|
|
||||||
ft_order_side='stoploss',
|
|
||||||
ft_pair=trade.pair,
|
|
||||||
ft_is_open=True,
|
|
||||||
ft_amount=trade.amount,
|
|
||||||
ft_price=trade.stop_loss,
|
|
||||||
order_id='102',
|
|
||||||
status='open',
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
hanging_stoploss_order = MagicMock(return_value={'status': 'open'})
|
hanging_stoploss_order = MagicMock(return_value={'id': '13434334', 'status': 'open'})
|
||||||
mocker.patch(f'{EXMS}.fetch_stoploss_order', hanging_stoploss_order)
|
mocker.patch(f'{EXMS}.fetch_stoploss_order', hanging_stoploss_order)
|
||||||
|
|
||||||
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
||||||
assert trade.stoploss_order_id == "102"
|
hanging_stoploss_order.assert_called_once_with('13434334', trade.pair)
|
||||||
|
assert trade.stoploss_order_id == "13434334"
|
||||||
|
|
||||||
# Third case: when stoploss was set but it was canceled for some reason
|
# Third case: when stoploss was set but it was canceled for some reason
|
||||||
# should set a stoploss immediately and return False
|
# should set a stoploss immediately and return False
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.stoploss_order_id = "102"
|
|
||||||
|
|
||||||
canceled_stoploss_order = MagicMock(return_value={'id': '103_1', 'status': 'canceled'})
|
canceled_stoploss_order = MagicMock(return_value={'id': '13434334', 'status': 'canceled'})
|
||||||
mocker.patch(f'{EXMS}.fetch_stoploss_order', canceled_stoploss_order)
|
mocker.patch(f'{EXMS}.fetch_stoploss_order', canceled_stoploss_order)
|
||||||
stoploss.reset_mock()
|
stoploss.reset_mock()
|
||||||
amount_before = trade.amount
|
amount_before = trade.amount
|
||||||
|
@ -1213,25 +1200,14 @@ def test_handle_stoploss_on_exchange(mocker, default_conf_usdt, fee, caplog, is_
|
||||||
# should unset stoploss_order_id and return true
|
# should unset stoploss_order_id and return true
|
||||||
# as a trade actually happened
|
# as a trade actually happened
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
freqtrade.enter_positions()
|
stop_order_dict.update({'id': "103_1"})
|
||||||
stop_order_dict.update({'id': "104"})
|
|
||||||
|
|
||||||
trade = Trade.session.scalars(select(Trade)).first()
|
trade = Trade.session.scalars(select(Trade)).first()
|
||||||
trade.is_short = is_short
|
trade.is_short = is_short
|
||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.stoploss_order_id = "104"
|
|
||||||
trade.orders.append(Order(
|
|
||||||
ft_order_side='stoploss',
|
|
||||||
order_id='104',
|
|
||||||
ft_pair=trade.pair,
|
|
||||||
ft_is_open=True,
|
|
||||||
ft_amount=trade.amount,
|
|
||||||
ft_price=0.0,
|
|
||||||
))
|
|
||||||
assert trade
|
|
||||||
|
|
||||||
stoploss_order_hit = MagicMock(return_value={
|
stoploss_order_hit = MagicMock(return_value={
|
||||||
'id': "104",
|
'id': "103_1",
|
||||||
'status': 'closed',
|
'status': 'closed',
|
||||||
'type': 'stop_loss_limit',
|
'type': 'stop_loss_limit',
|
||||||
'price': 3,
|
'price': 3,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user