mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-01-20 14:00:38 +00:00
test: improve liquidation-calculation test
Move maintenance margin to parameter, add tests from bybit page
This commit is contained in:
@@ -6077,44 +6077,47 @@ def test_get_liquidation_price1(mocker, default_conf):
|
||||
|
||||
@pytest.mark.parametrize("liquidation_buffer", [0.0])
|
||||
@pytest.mark.parametrize(
|
||||
"is_short,trading_mode,exchange_name,margin_mode,leverage,open_rate,amount,expected_liq",
|
||||
"is_short,trading_mode,exchange_name,margin_mode,leverage,open_rate,amount,mramt,expected_liq",
|
||||
[
|
||||
(False, "spot", "binance", "", 5.0, 10.0, 1.0, None),
|
||||
(True, "spot", "binance", "", 5.0, 10.0, 1.0, None),
|
||||
(False, "spot", "gate", "", 5.0, 10.0, 1.0, None),
|
||||
(True, "spot", "gate", "", 5.0, 10.0, 1.0, None),
|
||||
(False, "spot", "okx", "", 5.0, 10.0, 1.0, None),
|
||||
(True, "spot", "okx", "", 5.0, 10.0, 1.0, None),
|
||||
(False, "spot", "binance", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
(True, "spot", "binance", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
(False, "spot", "gate", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
(True, "spot", "gate", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
(False, "spot", "okx", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
(True, "spot", "okx", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
|
||||
# Binance, short
|
||||
(True, "futures", "binance", "isolated", 5.0, 10.0, 1.0, 11.89108910891089),
|
||||
(True, "futures", "binance", "isolated", 3.0, 10.0, 1.0, 13.211221122079207),
|
||||
(True, "futures", "binance", "isolated", 5.0, 8.0, 1.0, 9.514851485148514),
|
||||
(True, "futures", "binance", "isolated", 5.0, 10.0, 0.6, 11.897689768976898),
|
||||
(True, "futures", "binance", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 11.89108910891089),
|
||||
(True, "futures", "binance", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 13.211221122079207),
|
||||
(True, "futures", "binance", "isolated", 5.0, 8.0, 1.0, (0.01, 0.01), 9.514851485148514),
|
||||
(True, "futures", "binance", "isolated", 5.0, 10.0, 0.6, (0.01, 0.01), 11.897689768976898),
|
||||
# Binance, long
|
||||
(False, "futures", "binance", "isolated", 5, 10, 1.0, 8.070707070707071),
|
||||
(False, "futures", "binance", "isolated", 5, 8, 1.0, 6.454545454545454),
|
||||
(False, "futures", "binance", "isolated", 3, 10, 1.0, 6.723905723905723),
|
||||
(False, "futures", "binance", "isolated", 5, 10, 0.6, 8.063973063973064),
|
||||
(False, "futures", "binance", "isolated", 5, 10, 1.0, (0.01, 0.01), 8.070707070707071),
|
||||
(False, "futures", "binance", "isolated", 5, 8, 1.0, (0.01, 0.01), 6.454545454545454),
|
||||
(False, "futures", "binance", "isolated", 3, 10, 1.0, (0.01, 0.01), 6.723905723905723),
|
||||
(False, "futures", "binance", "isolated", 5, 10, 0.6, (0.01, 0.01), 8.063973063973064),
|
||||
# Gate/okx, short
|
||||
(True, "futures", "gate", "isolated", 5, 10, 1.0, 11.87413417771621),
|
||||
(True, "futures", "gate", "isolated", 5, 10, 2.0, 11.87413417771621),
|
||||
(True, "futures", "gate", "isolated", 3, 10, 1.0, 13.193482419684678),
|
||||
(True, "futures", "gate", "isolated", 5, 8, 1.0, 9.499307342172967),
|
||||
(True, "futures", "okx", "isolated", 3, 10, 1.0, 13.193482419684678),
|
||||
(True, "futures", "gate", "isolated", 5, 10, 1.0, (0.01, 0.01), 11.87413417771621),
|
||||
(True, "futures", "gate", "isolated", 5, 10, 2.0, (0.01, 0.01), 11.87413417771621),
|
||||
(True, "futures", "gate", "isolated", 3, 10, 1.0, (0.01, 0.01), 13.193482419684678),
|
||||
(True, "futures", "gate", "isolated", 5, 8, 1.0, (0.01, 0.01), 9.499307342172967),
|
||||
(True, "futures", "okx", "isolated", 3, 10, 1.0, (0.01, 0.01), 13.193482419684678),
|
||||
# Gate/okx, long
|
||||
(False, "futures", "gate", "isolated", 5.0, 10.0, 1.0, 8.085708510208207),
|
||||
(False, "futures", "gate", "isolated", 3.0, 10.0, 1.0, 6.738090425173506),
|
||||
(False, "futures", "okx", "isolated", 3.0, 10.0, 1.0, 6.738090425173506),
|
||||
(False, "futures", "gate", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 8.085708510208207),
|
||||
(False, "futures", "gate", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.738090425173506),
|
||||
(False, "futures", "okx", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.738090425173506),
|
||||
# bybit, long
|
||||
(False, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, 0.1),
|
||||
(False, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, 6.7666666),
|
||||
(False, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, 8.1),
|
||||
(False, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, 9.1),
|
||||
(False, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, (0.01, 0.01), 0.1),
|
||||
(False, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.7666666),
|
||||
(False, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 8.1),
|
||||
(False, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, (0.01, 0.01), 9.1),
|
||||
# From the bybit example - without additional margin
|
||||
(False, "futures", "bybit", "isolated", 50.0, 40000.0, 1.0, (0.005, None), 39400),
|
||||
(False, "futures", "bybit", "isolated", 50.0, 20000.0, 1.0, (0.005, None), 19700),
|
||||
# bybit, short
|
||||
(True, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, 19.9),
|
||||
(True, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, 13.233333),
|
||||
(True, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, 11.9),
|
||||
(True, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, 10.9),
|
||||
(True, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, (0.01, 0.01), 19.9),
|
||||
(True, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 13.233333),
|
||||
(True, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 11.9),
|
||||
(True, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, (0.01, 0.01), 10.9),
|
||||
],
|
||||
)
|
||||
def test_get_liquidation_price(
|
||||
@@ -6127,6 +6130,7 @@ def test_get_liquidation_price(
|
||||
leverage,
|
||||
open_rate,
|
||||
amount,
|
||||
mramt,
|
||||
expected_liq,
|
||||
liquidation_buffer,
|
||||
):
|
||||
@@ -6190,7 +6194,7 @@ def test_get_liquidation_price(
|
||||
mocker.patch(f"{EXMS}.price_to_precision", lambda s, x, y, **kwargs: y)
|
||||
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange=exchange_name)
|
||||
|
||||
exchange.get_maintenance_ratio_and_amt = MagicMock(return_value=(0.01, 0.01))
|
||||
exchange.get_maintenance_ratio_and_amt = MagicMock(return_value=mramt)
|
||||
exchange.name = exchange_name
|
||||
# default_conf_usdt.update({
|
||||
# "dry_run": False,
|
||||
|
||||
Reference in New Issue
Block a user