From 68a778a983cdeedf9edd07fb368efb485e0929d8 Mon Sep 17 00:00:00 2001 From: Sam Germain Date: Mon, 7 Feb 2022 04:08:30 -0600 Subject: [PATCH] moved leverage_tiers to a fixture --- tests/conftest.py | 435 ++++++++++++++++++++++++ tests/exchange/test_binance.py | 583 +-------------------------------- tests/exchange/test_okex.py | 187 +---------- 3 files changed, 452 insertions(+), 753 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index e6754a6a1..f87dcf83d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2841,3 +2841,438 @@ def funding_rate_history_octohourly(): "datetime": "2021-09-01T08:00:00.000Z" } ] + + +@pytest.fixture(scope='function') +def leverage_tiers(): + return { + "1000SHIB/USDT": [ + { + 'min': 0, + 'max': 50000, + 'mmr': 0.01, + 'lev': 50, + 'maintAmt': 0.0 + }, + { + 'min': 50000, + 'max': 150000, + 'mmr': 0.025, + 'lev': 20, + 'maintAmt': 750.0 + }, + { + 'min': 150000, + 'max': 250000, + 'mmr': 0.05, + 'lev': 10, + 'maintAmt': 4500.0 + }, + { + 'min': 250000, + 'max': 500000, + 'mmr': 0.1, + 'lev': 5, + 'maintAmt': 17000.0 + }, + { + 'min': 500000, + 'max': 1000000, + 'mmr': 0.125, + 'lev': 4, + 'maintAmt': 29500.0 + }, + { + 'min': 1000000, + 'max': 2000000, + 'mmr': 0.25, + 'lev': 2, + 'maintAmt': 154500.0 + }, + { + 'min': 2000000, + 'max': 30000000, + 'mmr': 0.5, + 'lev': 1, + 'maintAmt': 654500.0 + }, + ], + "1INCH/USDT": [ + { + 'min': 0, + 'max': 5000, + 'mmr': 0.012, + 'lev': 50, + 'maintAmt': 0.0 + }, + { + 'min': 5000, + 'max': 25000, + 'mmr': 0.025, + 'lev': 20, + 'maintAmt': 65.0 + }, + { + 'min': 25000, + 'max': 100000, + 'mmr': 0.05, + 'lev': 10, + 'maintAmt': 690.0 + }, + { + 'min': 100000, + 'max': 250000, + 'mmr': 0.1, + 'lev': 5, + 'maintAmt': 5690.0 + }, + { + 'min': 250000, + 'max': 1000000, + 'mmr': 0.125, + 'lev': 2, + 'maintAmt': 11940.0 + }, + { + 'min': 1000000, + 'max': 100000000, + 'mmr': 0.5, + 'lev': 1, + 'maintAmt': 386940.0 + }, + ], + "AAVE/USDT": [ + { + 'min': 0, + 'max': 50000, + 'mmr': 0.01, + 'lev': 50, + 'maintAmt': 0.0 + }, + { + 'min': 50000, + 'max': 250000, + 'mmr': 0.02, + 'lev': 25, + 'maintAmt': 500.0 + }, + { + 'min': 250000, + 'max': 1000000, + 'mmr': 0.05, + 'lev': 10, + 'maintAmt': 8000.0 + }, + { + 'min': 1000000, + 'max': 2000000, + 'mmr': 0.1, + 'lev': 5, + 'maintAmt': 58000.0 + }, + { + 'min': 2000000, + 'max': 5000000, + 'mmr': 0.125, + 'lev': 4, + 'maintAmt': 108000.0 + }, + { + 'min': 5000000, + 'max': 10000000, + 'mmr': 0.1665, + 'lev': 3, + 'maintAmt': 315500.0 + }, + { + 'min': 10000000, + 'max': 20000000, + 'mmr': 0.25, + 'lev': 2, + 'maintAmt': 1150500.0 + }, + { + "min": 20000000, + "max": 50000000, + "mmr": 0.5, + "lev": 1, + "maintAmt": 6150500.0 + } + ], + "ADA/BUSD": [ + { + "min": 0, + "max": 100000, + "mmr": 0.025, + "lev": 20, + "maintAmt": 0.0 + }, + { + "min": 100000, + "max": 500000, + "mmr": 0.05, + "lev": 10, + "maintAmt": 2500.0 + }, + { + "min": 500000, + "max": 1000000, + "mmr": 0.1, + "lev": 5, + "maintAmt": 27500.0 + }, + { + "min": 1000000, + "max": 2000000, + "mmr": 0.15, + "lev": 3, + "maintAmt": 77500.0 + }, + { + "min": 2000000, + "max": 5000000, + "mmr": 0.25, + "lev": 2, + "maintAmt": 277500.0 + }, + { + "min": 5000000, + "max": 30000000, + "mmr": 0.5, + "lev": 1, + "maintAmt": 1527500.0 + }, + ], + 'BNB/BUSD': [ + { + "min": 0, # stake(before leverage) = 0 + "max": 100000, # max stake(before leverage) = 5000 + "mmr": 0.025, + "lev": 20, + "maintAmt": 0.0 + }, + { + "min": 100000, # stake = 10000.0 + "max": 500000, # max_stake = 50000.0 + "mmr": 0.05, + "lev": 10, + "maintAmt": 2500.0 + }, + { + "min": 500000, # stake = 100000.0 + "max": 1000000, # max_stake = 200000.0 + "mmr": 0.1, + "lev": 5, + "maintAmt": 27500.0 + }, + { + "min": 1000000, # stake = 333333.3333333333 + "max": 2000000, # max_stake = 666666.6666666666 + "mmr": 0.15, + "lev": 3, + "maintAmt": 77500.0 + }, + { + "min": 2000000, # stake = 1000000.0 + "max": 5000000, # max_stake = 2500000.0 + "mmr": 0.25, + "lev": 2, + "maintAmt": 277500.0 + }, + { + "min": 5000000, # stake = 5000000.0 + "max": 30000000, # max_stake = 30000000.0 + "mmr": 0.5, + "lev": 1, + "maintAmt": 1527500.0 + } + ], + 'BNB/USDT': [ + { + "min": 0, # stake = 0.0 + "max": 10000, # max_stake = 133.33333333333334 + "mmr": 0.0065, + "lev": 75, + "maintAmt": 0.0 + }, + { + "min": 10000, # stake = 200.0 + "max": 50000, # max_stake = 1000.0 + "mmr": 0.01, + "lev": 50, + "maintAmt": 35.0 + }, + { + "min": 50000, # stake = 2000.0 + "max": 250000, # max_stake = 10000.0 + "mmr": 0.02, + "lev": 25, + "maintAmt": 535.0 + }, + { + "min": 250000, # stake = 25000.0 + "max": 1000000, # max_stake = 100000.0 + "mmr": 0.05, + "lev": 10, + "maintAmt": 8035.0 + }, + { + "min": 1000000, # stake = 200000.0 + "max": 2000000, # max_stake = 400000.0 + "mmr": 0.1, + "lev": 5, + "maintAmt": 58035.0 + }, + { + "min": 2000000, # stake = 500000.0 + "max": 5000000, # max_stake = 1250000.0 + "mmr": 0.125, + "lev": 4, + "maintAmt": 108035.0 + }, + { + "min": 5000000, # stake = 1666666.6666666667 + "max": 10000000, # max_stake = 3333333.3333333335 + "mmr": 0.15, + "lev": 3, + "maintAmt": 233035.0 + }, + { + "min": 10000000, # stake = 5000000.0 + "max": 20000000, # max_stake = 10000000.0 + "mmr": 0.25, + "lev": 2, + "maintAmt": 1233035.0 + }, + { + "min": 20000000, # stake = 20000000.0 + "max": 50000000, # max_stake = 50000000.0 + "mmr": 0.5, + "lev": 1, + "maintAmt": 6233035.0 + }, + ], + 'BTC/USDT': [ + { + "min": 0, # stake = 0.0 + "max": 50000, # max_stake = 400.0 + "mmr": 0.004, + "lev": 125, + "maintAmt": 0.0 + }, + { + "min": 50000, # stake = 500.0 + "max": 250000, # max_stake = 2500.0 + "mmr": 0.005, + "lev": 100, + "maintAmt": 50.0 + }, + { + "min": 250000, # stake = 5000.0 + "max": 1000000, # max_stake = 20000.0 + "mmr": 0.01, + "lev": 50, + "maintAmt": 1300.0 + }, + { + "min": 1000000, # stake = 50000.0 + "max": 7500000, # max_stake = 375000.0 + "mmr": 0.025, + "lev": 20, + "maintAmt": 16300.0 + }, + { + "min": 7500000, # stake = 750000.0 + "max": 40000000, # max_stake = 4000000.0 + "mmr": 0.05, + "lev": 10, + "maintAmt": 203800.0 + }, + { + "min": 40000000, # stake = 8000000.0 + "max": 100000000, # max_stake = 20000000.0 + "mmr": 0.1, + "lev": 5, + "maintAmt": 2203800.0 + }, + { + "min": 100000000, # stake = 25000000.0 + "max": 200000000, # max_stake = 50000000.0 + "mmr": 0.125, + "lev": 4, + "maintAmt": 4703800.0 + }, + { + "min": 200000000, # stake = 66666666.666666664 + "max": 400000000, # max_stake = 133333333.33333333 + "mmr": 0.15, + "lev": 3, + "maintAmt": 9703800.0 + }, + { + "min": 400000000, # stake = 200000000.0 + "max": 600000000, # max_stake = 300000000.0 + "mmr": 0.25, + "lev": 2, + "maintAmt": 4.97038E7 + }, + { + "min": 600000000, # stake = 600000000.0 + "max": 1000000000, # max_stake = 1000000000.0 + "mmr": 0.5, + "lev": 1, + "maintAmt": 1.997038E8 + }, + ], + "ZEC/USDT": [ + { + 'min': 0, + 'max': 50000, + 'mmr': 0.01, + 'lev': 50, + 'maintAmt': 0.0 + }, + { + 'min': 50000, + 'max': 150000, + 'mmr': 0.025, + 'lev': 20, + 'maintAmt': 750.0 + }, + { + 'min': 150000, + 'max': 250000, + 'mmr': 0.05, + 'lev': 10, + 'maintAmt': 4500.0 + }, + { + 'min': 250000, + 'max': 500000, + 'mmr': 0.1, + 'lev': 5, + 'maintAmt': 17000.0 + }, + { + 'min': 500000, + 'max': 1000000, + 'mmr': 0.125, + 'lev': 4, + 'maintAmt': 29500.0 + }, + { + 'min': 1000000, + 'max': 2000000, + 'mmr': 0.25, + 'lev': 2, + 'maintAmt': 154500.0 + }, + { + 'min': 2000000, + 'max': 30000000, + 'mmr': 0.5, + 'lev': 1, + 'maintAmt': 654500.0 + }, + ] + } diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index a3035e99d..d4c98fd63 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -149,7 +149,15 @@ def test_stoploss_order_dry_run_binance(default_conf, mocker): (1501, 1499, 1501, "sell"), (1499, 1501, 1499, "buy") ]) -def test_stoploss_adjust_binance(mocker, default_conf, sl1, sl2, sl3, side): +def test_stoploss_adjust_binance( + mocker, + default_conf, + leverage_tiers, + sl1, + sl2, + sl3, + side +): exchange = get_patched_exchange(mocker, default_conf, id='binance') order = { 'type': 'stop_loss_limit', @@ -163,7 +171,7 @@ def test_stoploss_adjust_binance(mocker, default_conf, sl1, sl2, sl3, side): assert not exchange.stoploss_adjust(sl3, order, side=side) -def test_get_max_leverage_binance(default_conf, mocker): +def test_get_max_leverage_binance(default_conf, mocker, leverage_tiers): # Test Spot exchange = get_patched_exchange(mocker, default_conf, id="binance") @@ -174,189 +182,7 @@ def test_get_max_leverage_binance(default_conf, mocker): default_conf['margin_mode'] = 'isolated' exchange = get_patched_exchange(mocker, default_conf, id="binance") - exchange._leverage_tiers = { - 'BNB/BUSD': [ - { - "min": 0, # stake(before leverage) = 0 - "max": 100000, # max stake(before leverage) = 5000 - "mmr": 0.025, - "lev": 20, - "maintAmt": 0.0 - }, - { - "min": 100000, # stake = 10000.0 - "max": 500000, # max_stake = 50000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 2500.0 - }, - { - "min": 500000, # stake = 100000.0 - "max": 1000000, # max_stake = 200000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 27500.0 - }, - { - "min": 1000000, # stake = 333333.3333333333 - "max": 2000000, # max_stake = 666666.6666666666 - "mmr": 0.15, - "lev": 3, - "maintAmt": 77500.0 - }, - { - "min": 2000000, # stake = 1000000.0 - "max": 5000000, # max_stake = 2500000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 277500.0 - }, - { - "min": 5000000, # stake = 5000000.0 - "max": 30000000, # max_stake = 30000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1527500.0 - } - ], - 'BNB/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 10000, # max_stake = 133.33333333333334 - "mmr": 0.0065, - "lev": 75, - "maintAmt": 0.0 - }, - { - "min": 10000, # stake = 200.0 - "max": 50000, # max_stake = 1000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 35.0 - }, - { - "min": 50000, # stake = 2000.0 - "max": 250000, # max_stake = 10000.0 - "mmr": 0.02, - "lev": 25, - "maintAmt": 535.0 - }, - { - "min": 250000, # stake = 25000.0 - "max": 1000000, # max_stake = 100000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 8035.0 - }, - { - "min": 1000000, # stake = 200000.0 - "max": 2000000, # max_stake = 400000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 58035.0 - }, - { - "min": 2000000, # stake = 500000.0 - "max": 5000000, # max_stake = 1250000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 108035.0 - }, - { - "min": 5000000, # stake = 1666666.6666666667 - "max": 10000000, # max_stake = 3333333.3333333335 - "mmr": 0.15, - "lev": 3, - "maintAmt": 233035.0 - }, - { - "min": 10000000, # stake = 5000000.0 - "max": 20000000, # max_stake = 10000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 1233035.0 - }, - { - "min": 20000000, # stake = 20000000.0 - "max": 50000000, # max_stake = 50000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 6233035.0 - }, - ], - 'BTC/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 50000, # max_stake = 400.0 - "mmr": 0.004, - "lev": 125, - "maintAmt": 0.0 - }, - { - "min": 50000, # stake = 500.0 - "max": 250000, # max_stake = 2500.0 - "mmr": 0.005, - "lev": 100, - "maintAmt": 50.0 - }, - { - "min": 250000, # stake = 5000.0 - "max": 1000000, # max_stake = 20000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 1300.0 - }, - { - "min": 1000000, # stake = 50000.0 - "max": 7500000, # max_stake = 375000.0 - "mmr": 0.025, - "lev": 20, - "maintAmt": 16300.0 - }, - { - "min": 7500000, # stake = 750000.0 - "max": 40000000, # max_stake = 4000000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 203800.0 - }, - { - "min": 40000000, # stake = 8000000.0 - "max": 100000000, # max_stake = 20000000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 2203800.0 - }, - { - "min": 100000000, # stake = 25000000.0 - "max": 200000000, # max_stake = 50000000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 4703800.0 - }, - { - "min": 200000000, # stake = 66666666.666666664 - "max": 400000000, # max_stake = 133333333.33333333 - "mmr": 0.15, - "lev": 3, - "maintAmt": 9703800.0 - }, - { - "min": 400000000, # stake = 200000000.0 - "max": 600000000, # max_stake = 300000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 4.97038E7 - }, - { - "min": 600000000, # stake = 600000000.0 - "max": 1000000000, # max_stake = 1000000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1.997038E8 - }, - ] - } + exchange._leverage_tiers = leverage_tiers assert exchange.get_max_leverage("BNB/BUSD", 1.0) == 20.0 assert exchange.get_max_leverage("BNB/USDT", 100.0) == 75.0 @@ -697,212 +523,14 @@ def test_fill_leverage_tiers_binance(default_conf, mocker): ) -def test_fill_leverage_tiers_binance_dryrun(default_conf, mocker): +def test_fill_leverage_tiers_binance_dryrun(default_conf, mocker, leverage_tiers): api_mock = MagicMock() default_conf['trading_mode'] = TradingMode.FUTURES default_conf['margin_mode'] = MarginMode.ISOLATED exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance") exchange.fill_leverage_tiers() - leverage_tiers = { - "1000SHIB/USDT": [ - { - 'min': 0, - 'max': 50000, - 'mmr': 0.01, - 'lev': 50, - 'maintAmt': 0.0 - }, - { - 'min': 50000, - 'max': 150000, - 'mmr': 0.025, - 'lev': 20, - 'maintAmt': 750.0 - }, - { - 'min': 150000, - 'max': 250000, - 'mmr': 0.05, - 'lev': 10, - 'maintAmt': 4500.0 - }, - { - 'min': 250000, - 'max': 500000, - 'mmr': 0.1, - 'lev': 5, - 'maintAmt': 17000.0 - }, - { - 'min': 500000, - 'max': 1000000, - 'mmr': 0.125, - 'lev': 4, - 'maintAmt': 29500.0 - }, - { - 'min': 1000000, - 'max': 2000000, - 'mmr': 0.25, - 'lev': 2, - 'maintAmt': 154500.0 - }, - { - 'min': 2000000, - 'max': 30000000, - 'mmr': 0.5, - 'lev': 1, - 'maintAmt': 654500.0 - }, - ], - "1INCH/USDT": [ - { - 'min': 0, - 'max': 5000, - 'mmr': 0.012, - 'lev': 50, - 'maintAmt': 0.0 - }, - { - 'min': 5000, - 'max': 25000, - 'mmr': 0.025, - 'lev': 20, - 'maintAmt': 65.0 - }, - { - 'min': 25000, - 'max': 100000, - 'mmr': 0.05, - 'lev': 10, - 'maintAmt': 690.0 - }, - { - 'min': 100000, - 'max': 250000, - 'mmr': 0.1, - 'lev': 5, - 'maintAmt': 5690.0 - }, - { - 'min': 250000, - 'max': 1000000, - 'mmr': 0.125, - 'lev': 2, - 'maintAmt': 11940.0 - }, - { - 'min': 1000000, - 'max': 100000000, - 'mmr': 0.5, - 'lev': 1, - 'maintAmt': 386940.0 - }, - ], - "AAVE/USDT": [ - { - 'min': 0, - 'max': 50000, - 'mmr': 0.01, - 'lev': 50, - 'maintAmt': 0.0 - }, - { - 'min': 50000, - 'max': 250000, - 'mmr': 0.02, - 'lev': 25, - 'maintAmt': 500.0 - }, - { - 'min': 250000, - 'max': 1000000, - 'mmr': 0.05, - 'lev': 10, - 'maintAmt': 8000.0 - }, - { - 'min': 1000000, - 'max': 2000000, - 'mmr': 0.1, - 'lev': 5, - 'maintAmt': 58000.0 - }, - { - 'min': 2000000, - 'max': 5000000, - 'mmr': 0.125, - 'lev': 4, - 'maintAmt': 108000.0 - }, - { - 'min': 5000000, - 'max': 10000000, - 'mmr': 0.1665, - 'lev': 3, - 'maintAmt': 315500.0 - }, - { - 'min': 10000000, - 'max': 20000000, - 'mmr': 0.25, - 'lev': 2, - 'maintAmt': 1150500.0 - }, - { - "min": 20000000, - "max": 50000000, - "mmr": 0.5, - "lev": 1, - "maintAmt": 6150500.0 - } - ], - "ADA/BUSD": [ - { - "min": 0, - "max": 100000, - "mmr": 0.025, - "lev": 20, - "maintAmt": 0.0 - }, - { - "min": 100000, - "max": 500000, - "mmr": 0.05, - "lev": 10, - "maintAmt": 2500.0 - }, - { - "min": 500000, - "max": 1000000, - "mmr": 0.1, - "lev": 5, - "maintAmt": 27500.0 - }, - { - "min": 1000000, - "max": 2000000, - "mmr": 0.15, - "lev": 3, - "maintAmt": 77500.0 - }, - { - "min": 2000000, - "max": 5000000, - "mmr": 0.25, - "lev": 2, - "maintAmt": 277500.0 - }, - { - "min": 5000000, - "max": 30000000, - "mmr": 0.5, - "lev": 1, - "maintAmt": 1527500.0 - }, - ] - } + leverage_tiers = leverage_tiers for key, value in leverage_tiers.items(): assert exchange._leverage_tiers[key] == value @@ -990,194 +618,13 @@ def test__ccxt_config(default_conf, mocker, trading_mode, margin_mode, config): def test_get_maintenance_ratio_and_amt_binance( default_conf, mocker, + leverage_tiers, pair, nominal_value, mm_ratio, amt, ): exchange = get_patched_exchange(mocker, default_conf, id="binance") - exchange._leverage_tiers = { - 'BNB/BUSD': [ - { - "min": 0, # stake(before leverage) = 0 - "max": 100000, # max stake(before leverage) = 5000 - "mmr": 0.025, - "lev": 20, - "maintAmt": 0.0 - }, - { - "min": 100000, # stake = 10000.0 - "max": 500000, # max_stake = 50000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 2500.0 - }, - { - "min": 500000, # stake = 100000.0 - "max": 1000000, # max_stake = 200000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 27500.0 - }, - { - "min": 1000000, # stake = 333333.3333333333 - "max": 2000000, # max_stake = 666666.6666666666 - "mmr": 0.15, - "lev": 3, - "maintAmt": 77500.0 - }, - { - "min": 2000000, # stake = 1000000.0 - "max": 5000000, # max_stake = 2500000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 277500.0 - }, - { - "min": 5000000, # stake = 5000000.0 - "max": 30000000, # max_stake = 30000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1527500.0 - } - ], - 'BNB/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 10000, # max_stake = 133.33333333333334 - "mmr": 0.0065, - "lev": 75, - "maintAmt": 0.0 - }, - { - "min": 10000, # stake = 200.0 - "max": 50000, # max_stake = 1000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 35.0 - }, - { - "min": 50000, # stake = 2000.0 - "max": 250000, # max_stake = 10000.0 - "mmr": 0.02, - "lev": 25, - "maintAmt": 535.0 - }, - { - "min": 250000, # stake = 25000.0 - "max": 1000000, # max_stake = 100000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 8035.0 - }, - { - "min": 1000000, # stake = 200000.0 - "max": 2000000, # max_stake = 400000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 58035.0 - }, - { - "min": 2000000, # stake = 500000.0 - "max": 5000000, # max_stake = 1250000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 108035.0 - }, - { - "min": 5000000, # stake = 1666666.6666666667 - "max": 10000000, # max_stake = 3333333.3333333335 - "mmr": 0.15, - "lev": 3, - "maintAmt": 233035.0 - }, - { - "min": 10000000, # stake = 5000000.0 - "max": 20000000, # max_stake = 10000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 1233035.0 - }, - { - "min": 20000000, # stake = 20000000.0 - "max": 50000000, # max_stake = 50000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 6233035.0 - }, - ], - 'BTC/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 50000, # max_stake = 400.0 - "mmr": 0.004, - "lev": 125, - "maintAmt": 0.0 - }, - { - "min": 50000, # stake = 500.0 - "max": 250000, # max_stake = 2500.0 - "mmr": 0.005, - "lev": 100, - "maintAmt": 50.0 - }, - { - "min": 250000, # stake = 5000.0 - "max": 1000000, # max_stake = 20000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 1300.0 - }, - { - "min": 1000000, # stake = 50000.0 - "max": 7500000, # max_stake = 375000.0 - "mmr": 0.025, - "lev": 20, - "maintAmt": 16300.0 - }, - { - "min": 7500000, # stake = 750000.0 - "max": 40000000, # max_stake = 4000000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 203800.0 - }, - { - "min": 40000000, # stake = 8000000.0 - "max": 100000000, # max_stake = 20000000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 2203800.0 - }, - { - "min": 100000000, # stake = 25000000.0 - "max": 200000000, # max_stake = 50000000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 4703800.0 - }, - { - "min": 200000000, # stake = 66666666.666666664 - "max": 400000000, # max_stake = 133333333.33333333 - "mmr": 0.15, - "lev": 3, - "maintAmt": 9703800.0 - }, - { - "min": 400000000, # stake = 200000000.0 - "max": 600000000, # max_stake = 300000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 4.97038E7 - }, - { - "min": 600000000, # stake = 600000000.0 - "max": 1000000000, # max_stake = 1000000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1.997038E8 - }, - ] - } + exchange._leverage_tiers = leverage_tiers (result_ratio, result_amt) = exchange.get_maintenance_ratio_and_amt(pair, nominal_value) assert (round(result_ratio, 8), round(result_amt, 8)) == (mm_ratio, amt) diff --git a/tests/exchange/test_okex.py b/tests/exchange/test_okex.py index 5519d832a..997f65d27 100644 --- a/tests/exchange/test_okex.py +++ b/tests/exchange/test_okex.py @@ -35,7 +35,6 @@ def test_get_maintenance_ratio_and_amt_okex( }, { 'tier': 2, - # TODO-lev: What about a value between 2000 and 2001? 'notionalFloor': 2001, 'notionalCap': 4000, 'maintenanceMarginRatio': 0.015, @@ -148,7 +147,7 @@ def test_get_maintenance_ratio_and_amt_okex( assert exchange.get_maintenance_ratio_and_amt('DOGE/USDT:USDT', 2000) == (0.03, None) -def test_get_max_pair_stake_amount_okex(default_conf, mocker): +def test_get_max_pair_stake_amount_okex(default_conf, mocker, leverage_tiers): exchange = get_patched_exchange(mocker, default_conf, id="okex") assert exchange.get_max_pair_stake_amount('BNB/BUSD', 1.0) == float('inf') @@ -156,189 +155,7 @@ def test_get_max_pair_stake_amount_okex(default_conf, mocker): default_conf['trading_mode'] = 'futures' default_conf['margin_mode'] = 'isolated' exchange = get_patched_exchange(mocker, default_conf, id="okex") - exchange._leverage_tiers = { - 'BNB/BUSD': [ - { - "min": 0, # stake(before leverage) = 0 - "max": 100000, # max stake(before leverage) = 5000 - "mmr": 0.025, - "lev": 20, - "maintAmt": 0.0 - }, - { - "min": 100000, # stake = 10000.0 - "max": 500000, # max_stake = 50000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 2500.0 - }, - { - "min": 500000, # stake = 100000.0 - "max": 1000000, # max_stake = 200000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 27500.0 - }, - { - "min": 1000000, # stake = 333333.3333333333 - "max": 2000000, # max_stake = 666666.6666666666 - "mmr": 0.15, - "lev": 3, - "maintAmt": 77500.0 - }, - { - "min": 2000000, # stake = 1000000.0 - "max": 5000000, # max_stake = 2500000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 277500.0 - }, - { - "min": 5000000, # stake = 5000000.0 - "max": 30000000, # max_stake = 30000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1527500.0 - } - ], - 'BNB/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 10000, # max_stake = 133.33333333333334 - "mmr": 0.0065, - "lev": 75, - "maintAmt": 0.0 - }, - { - "min": 10000, # stake = 200.0 - "max": 50000, # max_stake = 1000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 35.0 - }, - { - "min": 50000, # stake = 2000.0 - "max": 250000, # max_stake = 10000.0 - "mmr": 0.02, - "lev": 25, - "maintAmt": 535.0 - }, - { - "min": 250000, # stake = 25000.0 - "max": 1000000, # max_stake = 100000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 8035.0 - }, - { - "min": 1000000, # stake = 200000.0 - "max": 2000000, # max_stake = 400000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 58035.0 - }, - { - "min": 2000000, # stake = 500000.0 - "max": 5000000, # max_stake = 1250000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 108035.0 - }, - { - "min": 5000000, # stake = 1666666.6666666667 - "max": 10000000, # max_stake = 3333333.3333333335 - "mmr": 0.15, - "lev": 3, - "maintAmt": 233035.0 - }, - { - "min": 10000000, # stake = 5000000.0 - "max": 20000000, # max_stake = 10000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 1233035.0 - }, - { - "min": 20000000, # stake = 20000000.0 - "max": 50000000, # max_stake = 50000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 6233035.0 - }, - ], - 'BTC/USDT': [ - { - "min": 0, # stake = 0.0 - "max": 50000, # max_stake = 400.0 - "mmr": 0.004, - "lev": 125, - "maintAmt": 0.0 - }, - { - "min": 50000, # stake = 500.0 - "max": 250000, # max_stake = 2500.0 - "mmr": 0.005, - "lev": 100, - "maintAmt": 50.0 - }, - { - "min": 250000, # stake = 5000.0 - "max": 1000000, # max_stake = 20000.0 - "mmr": 0.01, - "lev": 50, - "maintAmt": 1300.0 - }, - { - "min": 1000000, # stake = 50000.0 - "max": 7500000, # max_stake = 375000.0 - "mmr": 0.025, - "lev": 20, - "maintAmt": 16300.0 - }, - { - "min": 7500000, # stake = 750000.0 - "max": 40000000, # max_stake = 4000000.0 - "mmr": 0.05, - "lev": 10, - "maintAmt": 203800.0 - }, - { - "min": 40000000, # stake = 8000000.0 - "max": 100000000, # max_stake = 20000000.0 - "mmr": 0.1, - "lev": 5, - "maintAmt": 2203800.0 - }, - { - "min": 100000000, # stake = 25000000.0 - "max": 200000000, # max_stake = 50000000.0 - "mmr": 0.125, - "lev": 4, - "maintAmt": 4703800.0 - }, - { - "min": 200000000, # stake = 66666666.666666664 - "max": 400000000, # max_stake = 133333333.33333333 - "mmr": 0.15, - "lev": 3, - "maintAmt": 9703800.0 - }, - { - "min": 400000000, # stake = 200000000.0 - "max": 600000000, # max_stake = 300000000.0 - "mmr": 0.25, - "lev": 2, - "maintAmt": 4.97038E7 - }, - { - "min": 600000000, # stake = 600000000.0 - "max": 1000000000, # max_stake = 1000000000.0 - "mmr": 0.5, - "lev": 1, - "maintAmt": 1.997038E8 - }, - ] - } + exchange._leverage_tiers = leverage_tiers assert exchange.get_max_pair_stake_amount('BNB/BUSD', 1.0) == 30000000 assert exchange.get_max_pair_stake_amount('BNB/USDT', 1.0) == 50000000