Improve forceexit API test
This commit is contained in:
parent
d3780b931c
commit
6ded2d5b7c
@ -682,7 +682,7 @@ class RPC:
|
|||||||
exit_check = ExitCheckTuple(exit_type=ExitType.FORCE_EXIT)
|
exit_check = ExitCheckTuple(exit_type=ExitType.FORCE_EXIT)
|
||||||
order_type = ordertype or self._freqtrade.strategy.order_types.get(
|
order_type = ordertype or self._freqtrade.strategy.order_types.get(
|
||||||
"force_exit", self._freqtrade.strategy.order_types["exit"])
|
"force_exit", self._freqtrade.strategy.order_types["exit"])
|
||||||
sub_amount: float = None
|
sub_amount: Optional[float] = None
|
||||||
if _amount and _amount < trade.amount:
|
if _amount and _amount < trade.amount:
|
||||||
# Partial exit ...
|
# Partial exit ...
|
||||||
min_exit_stake = self._freqtrade.exchange.get_min_pair_stake_amount(
|
min_exit_stake = self._freqtrade.exchange.get_min_pair_stake_amount(
|
||||||
|
@ -214,7 +214,8 @@ def mock_trade_4(fee, is_short: bool):
|
|||||||
open_order_id=f'prod_buy_{direc(is_short)}_12345',
|
open_order_id=f'prod_buy_{direc(is_short)}_12345',
|
||||||
strategy='StrategyTestV3',
|
strategy='StrategyTestV3',
|
||||||
timeframe=5,
|
timeframe=5,
|
||||||
is_short=is_short
|
is_short=is_short,
|
||||||
|
stop_loss_pct=0.10
|
||||||
)
|
)
|
||||||
o = Order.parse_from_ccxt_object(mock_order_4(is_short), 'ETC/BTC', entry_side(is_short))
|
o = Order.parse_from_ccxt_object(mock_order_4(is_short), 'ETC/BTC', entry_side(is_short))
|
||||||
trade.orders.append(o)
|
trade.orders.append(o)
|
||||||
@ -270,7 +271,8 @@ def mock_trade_5(fee, is_short: bool):
|
|||||||
enter_tag='TEST1',
|
enter_tag='TEST1',
|
||||||
stoploss_order_id=f'prod_stoploss_{direc(is_short)}_3455',
|
stoploss_order_id=f'prod_stoploss_{direc(is_short)}_3455',
|
||||||
timeframe=5,
|
timeframe=5,
|
||||||
is_short=is_short
|
is_short=is_short,
|
||||||
|
stop_loss_pct=0.10,
|
||||||
)
|
)
|
||||||
o = Order.parse_from_ccxt_object(mock_order_5(is_short), 'XRP/BTC', entry_side(is_short))
|
o = Order.parse_from_ccxt_object(mock_order_5(is_short), 'XRP/BTC', entry_side(is_short))
|
||||||
trade.orders.append(o)
|
trade.orders.append(o)
|
||||||
|
@ -1202,7 +1202,7 @@ def test_api_forceexit(botclient, mocker, ticker, fee, markets):
|
|||||||
fetch_ticker=ticker,
|
fetch_ticker=ticker,
|
||||||
get_fee=fee,
|
get_fee=fee,
|
||||||
markets=PropertyMock(return_value=markets),
|
markets=PropertyMock(return_value=markets),
|
||||||
_is_dry_limit_order_filled=MagicMock(return_value=False),
|
_is_dry_limit_order_filled=MagicMock(return_value=True),
|
||||||
)
|
)
|
||||||
patch_get_signal(ftbot)
|
patch_get_signal(ftbot)
|
||||||
|
|
||||||
@ -1212,12 +1212,27 @@ def test_api_forceexit(botclient, mocker, ticker, fee, markets):
|
|||||||
assert rc.json() == {"error": "Error querying /api/v1/forceexit: invalid argument"}
|
assert rc.json() == {"error": "Error querying /api/v1/forceexit: invalid argument"}
|
||||||
Trade.query.session.rollback()
|
Trade.query.session.rollback()
|
||||||
|
|
||||||
ftbot.enter_positions()
|
create_mock_trades(fee)
|
||||||
|
trade = Trade.get_trades([Trade.id == 5]).first()
|
||||||
|
assert pytest.approx(trade.amount) == 123
|
||||||
|
rc = client_post(client, f"{BASE_URI}/forceexit",
|
||||||
|
data='{"tradeid": "5", "ordertype": "market", "amount": 23}')
|
||||||
|
assert_response(rc)
|
||||||
|
assert rc.json() == {'result': 'Created sell order for trade 5.'}
|
||||||
|
Trade.query.session.rollback()
|
||||||
|
|
||||||
|
trade = Trade.get_trades([Trade.id == 5]).first()
|
||||||
|
assert pytest.approx(trade.amount) == 100
|
||||||
|
assert trade.is_open is True
|
||||||
|
|
||||||
rc = client_post(client, f"{BASE_URI}/forceexit",
|
rc = client_post(client, f"{BASE_URI}/forceexit",
|
||||||
data='{"tradeid": "1"}')
|
data='{"tradeid": "5"}')
|
||||||
assert_response(rc)
|
assert_response(rc)
|
||||||
assert rc.json() == {'result': 'Created sell order for trade 1.'}
|
assert rc.json() == {'result': 'Created sell order for trade 5.'}
|
||||||
|
Trade.query.session.rollback()
|
||||||
|
|
||||||
|
trade = Trade.get_trades([Trade.id == 5]).first()
|
||||||
|
assert trade.is_open is False
|
||||||
|
|
||||||
|
|
||||||
def test_api_pair_candles(botclient, ohlcv_history):
|
def test_api_pair_candles(botclient, ohlcv_history):
|
||||||
|
Loading…
Reference in New Issue
Block a user