Merge remote-tracking branch 'origin/develop' into feature/proceed-exit-while-open-order

This commit is contained in:
Axel-CH
2024-09-24 11:58:15 -04:00
57 changed files with 4549 additions and 2495 deletions
+22 -7
View File
@@ -689,13 +689,29 @@ def test_process_trade_creation(
assert trade.open_date is not None
assert trade.exchange == "binance"
assert trade.open_rate == ticker_usdt.return_value[ticker_side]
assert pytest.approx(trade.amount) == 60 / ticker_usdt.return_value[ticker_side]
# Trade opens with 0 amount. Only trade filling will set the amount
assert pytest.approx(trade.amount) == 0
assert pytest.approx(trade.amount_requested) == 60 / ticker_usdt.return_value[ticker_side]
assert log_has(
f'{"Short" if is_short else "Long"} signal found: about create a new trade for ETH/USDT '
"with stake_amount: 60.0 ...",
caplog,
)
mocker.patch("freqtrade.freqtradebot.FreqtradeBot._check_and_execute_exit")
# Fill trade.
freqtrade.process()
trades = Trade.get_open_trades()
assert len(trades) == 1
trade = trades[0]
assert trade is not None
assert trade.is_open
assert trade.open_date is not None
assert trade.exchange == "binance"
assert trade.open_rate == limit_order[entry_side(is_short)]["price"]
# Filled trade has amount set to filled order amount
assert pytest.approx(trade.amount) == limit_order[entry_side(is_short)]["filled"]
def test_process_exchange_failures(default_conf_usdt, ticker_usdt, mocker) -> None:
@@ -1685,7 +1701,7 @@ def test_handle_trade_roi(
create_order=MagicMock(
side_effect=[
open_order,
{"id": 1234553382},
{"id": 1234553382, "amount": open_order["amount"]},
]
),
get_fee=fee,
@@ -2205,7 +2221,6 @@ def test_manage_open_orders_buy_exception(
patch_exchange(mocker)
mocker.patch.multiple(
EXMS,
validate_pairs=MagicMock(),
fetch_ticker=ticker_usdt,
fetch_order=MagicMock(side_effect=ExchangeError),
cancel_order=cancel_order_mock,
@@ -2884,7 +2899,7 @@ def test_execute_trade_exit_up(
EXMS,
fetch_ticker=ticker_usdt,
get_fee=fee,
_dry_is_price_crossed=MagicMock(return_value=False),
_dry_is_price_crossed=MagicMock(side_effect=[True, False]),
)
patch_whitelist(mocker, default_conf_usdt)
freqtrade = FreqtradeBot(default_conf_usdt)
@@ -2976,7 +2991,7 @@ def test_execute_trade_exit_down(
EXMS,
fetch_ticker=ticker_usdt,
get_fee=fee,
_dry_is_price_crossed=MagicMock(return_value=False),
_dry_is_price_crossed=MagicMock(side_effect=[True, False]),
)
patch_whitelist(mocker, default_conf_usdt)
freqtrade = FreqtradeBot(default_conf_usdt)
@@ -2999,7 +3014,7 @@ def test_execute_trade_exit_down(
exit_check=ExitCheckTuple(exit_type=ExitType.STOP_LOSS),
)
assert rpc_mock.call_count == 2
assert rpc_mock.call_count == 3
last_msg = rpc_mock.call_args_list[-1][0][0]
assert {
"type": RPCMessageType.EXIT,
@@ -3063,7 +3078,7 @@ def test_execute_trade_exit_custom_exit_price(
EXMS,
fetch_ticker=ticker_usdt,
get_fee=fee,
_dry_is_price_crossed=MagicMock(return_value=False),
_dry_is_price_crossed=MagicMock(side_effect=[True, False]),
)
config = deepcopy(default_conf_usdt)
config["custom_price_max_distance_ratio"] = 0.1
@@ -1109,7 +1109,7 @@ def test_execute_trade_exit_down_stoploss_on_exchange_dry_run(
EXMS,
fetch_ticker=ticker_usdt,
get_fee=fee,
_dry_is_price_crossed=MagicMock(return_value=False),
_dry_is_price_crossed=MagicMock(side_effect=[True, False]),
)
patch_whitelist(mocker, default_conf_usdt)
freqtrade = FreqtradeBot(default_conf_usdt)
@@ -1136,7 +1136,7 @@ def test_execute_trade_exit_down_stoploss_on_exchange_dry_run(
trade=trade, limit=trade.stop_loss, exit_check=ExitCheckTuple(exit_type=ExitType.STOP_LOSS)
)
assert rpc_mock.call_count == 2
# assert rpc_mock.call_count == 2
last_msg = rpc_mock.call_args_list[-1][0][0]
assert {
@@ -1169,7 +1169,7 @@ def test_execute_trade_exit_down_stoploss_on_exchange_dry_run(
"cumulative_profit": 0.0,
"stake_amount": pytest.approx(60),
"is_final_exit": False,
"final_profit_ratio": None,
"final_profit_ratio": ANY,
} == last_msg