Add check_order_cancelled_empty method to exchange
This commit is contained in:
parent
9c351007f5
commit
270ac2e8c1
@ -902,6 +902,14 @@ class Exchange:
|
|||||||
self._async_get_trade_history(pair=pair, since=since,
|
self._async_get_trade_history(pair=pair, since=since,
|
||||||
until=until, from_id=from_id))
|
until=until, from_id=from_id))
|
||||||
|
|
||||||
|
def check_order_canceled_empty(self, order: Dict) -> bool:
|
||||||
|
"""
|
||||||
|
Verify if an order has been cancelled without being partially filled
|
||||||
|
:param order: Order dict as returned from get_order()
|
||||||
|
:return: True if order has been cancelled without being filled, False otherwise.
|
||||||
|
"""
|
||||||
|
return order['status'] in ('closed', 'canceled') and order.get('filled') == 0.0
|
||||||
|
|
||||||
@retrier
|
@retrier
|
||||||
def cancel_order(self, order_id: str, pair: str) -> None:
|
def cancel_order(self, order_id: str, pair: str) -> None:
|
||||||
if self._config['dry_run']:
|
if self._config['dry_run']:
|
||||||
|
@ -1705,6 +1705,18 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name):
|
|||||||
assert exchange.cancel_order(order_id='123', pair='TKN/BTC') is None
|
assert exchange.cancel_order(order_id='123', pair='TKN/BTC') is None
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
||||||
|
@pytest.mark.parametrize("order,result", [
|
||||||
|
({'status': 'closed', 'filled': 10}, False),
|
||||||
|
({'status': 'closed', 'filled': 0.0}, True),
|
||||||
|
({'status': 'canceled', 'filled': 0.0}, True),
|
||||||
|
({'status': 'canceled', 'filled': 10.0}, False),
|
||||||
|
])
|
||||||
|
def test_check_order_canceled_empty(mocker, default_conf, exchange_name, order, result):
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
|
||||||
|
assert exchange.check_order_canceled_empty(order) == result
|
||||||
|
|
||||||
|
|
||||||
# Ensure that if not dry_run, we should call API
|
# Ensure that if not dry_run, we should call API
|
||||||
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
@pytest.mark.parametrize("exchange_name", EXCHANGES)
|
||||||
def test_cancel_order(default_conf, mocker, exchange_name):
|
def test_cancel_order(default_conf, mocker, exchange_name):
|
||||||
|
Loading…
Reference in New Issue
Block a user