Added leverage brackets dry run test
This commit is contained in:
parent
798a0c9827
commit
32e52cd460
@ -33,7 +33,7 @@ class Binance(Exchange):
|
|||||||
# TradingMode.SPOT always supported and not required in this list
|
# TradingMode.SPOT always supported and not required in this list
|
||||||
# (TradingMode.MARGIN, Collateral.CROSS), # TODO-lev: Uncomment once supported
|
# (TradingMode.MARGIN, Collateral.CROSS), # TODO-lev: Uncomment once supported
|
||||||
# (TradingMode.FUTURES, Collateral.CROSS), # TODO-lev: Uncomment once supported
|
# (TradingMode.FUTURES, Collateral.CROSS), # TODO-lev: Uncomment once supported
|
||||||
# (TradingMode.FUTURES, Collateral.ISOLATED) # TODO-lev: Uncomment once supported
|
(TradingMode.FUTURES, Collateral.ISOLATED)
|
||||||
]
|
]
|
||||||
|
|
||||||
def stoploss_adjust(self, stop_loss: float, order: Dict, side: str) -> bool:
|
def stoploss_adjust(self, stop_loss: float, order: Dict, side: str) -> bool:
|
||||||
|
@ -2,16 +2,14 @@ from datetime import datetime, timezone
|
|||||||
from random import randint
|
from random import randint
|
||||||
from unittest.mock import MagicMock, PropertyMock
|
from unittest.mock import MagicMock, PropertyMock
|
||||||
|
|
||||||
import json
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
import ccxt
|
import ccxt
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from freqtrade.enums import TradingMode
|
from freqtrade.enums import Collateral, TradingMode
|
||||||
from freqtrade.exceptions import DependencyException, InvalidOrderException, OperationalException
|
from freqtrade.exceptions import DependencyException, InvalidOrderException, OperationalException
|
||||||
from tests.conftest import get_mock_coro, get_patched_exchange, log_has_re
|
from tests.conftest import get_mock_coro, get_patched_exchange, log_has_re
|
||||||
from tests.exchange.test_exchange import ccxt_exceptionhandlers
|
from tests.exchange.test_exchange import ccxt_exceptionhandlers
|
||||||
|
from tests.leverage_brackets import leverage_brackets
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('limitratio,expected,side', [
|
@pytest.mark.parametrize('limitratio,expected,side', [
|
||||||
@ -206,76 +204,61 @@ def test_get_max_leverage_binance(default_conf, mocker, pair, nominal_value, max
|
|||||||
|
|
||||||
def test_fill_leverage_brackets_binance(default_conf, mocker):
|
def test_fill_leverage_brackets_binance(default_conf, mocker):
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
# api_mock.load_leverage_brackets = MagicMock(return_value={
|
api_mock.load_leverage_brackets = MagicMock(return_value={
|
||||||
# 'ADA/BUSD': [[0.0, 0.025],
|
'ADA/BUSD': [[0.0, 0.025],
|
||||||
# [100000.0, 0.05],
|
[100000.0, 0.05],
|
||||||
# [500000.0, 0.1],
|
[500000.0, 0.1],
|
||||||
# [1000000.0, 0.15],
|
[1000000.0, 0.15],
|
||||||
# [2000000.0, 0.25],
|
[2000000.0, 0.25],
|
||||||
# [5000000.0, 0.5]],
|
[5000000.0, 0.5]],
|
||||||
# 'BTC/USDT': [[0.0, 0.004],
|
'BTC/USDT': [[0.0, 0.004],
|
||||||
# [50000.0, 0.005],
|
[50000.0, 0.005],
|
||||||
# [250000.0, 0.01],
|
[250000.0, 0.01],
|
||||||
# [1000000.0, 0.025],
|
[1000000.0, 0.025],
|
||||||
# [5000000.0, 0.05],
|
[5000000.0, 0.05],
|
||||||
# [20000000.0, 0.1],
|
[20000000.0, 0.1],
|
||||||
# [50000000.0, 0.125],
|
[50000000.0, 0.125],
|
||||||
# [100000000.0, 0.15],
|
[100000000.0, 0.15],
|
||||||
# [200000000.0, 0.25],
|
[200000000.0, 0.25],
|
||||||
# [300000000.0, 0.5]],
|
[300000000.0, 0.5]],
|
||||||
# "ZEC/USDT": [[0.0, 0.01],
|
"ZEC/USDT": [[0.0, 0.01],
|
||||||
# [5000.0, 0.025],
|
[5000.0, 0.025],
|
||||||
# [25000.0, 0.05],
|
[25000.0, 0.05],
|
||||||
# [100000.0, 0.1],
|
[100000.0, 0.1],
|
||||||
# [250000.0, 0.125],
|
[250000.0, 0.125],
|
||||||
# [1000000.0, 0.5]],
|
[1000000.0, 0.5]],
|
||||||
|
|
||||||
# })
|
})
|
||||||
|
default_conf['dry_run'] = False
|
||||||
|
default_conf['trading_mode'] = TradingMode.FUTURES
|
||||||
|
default_conf['collateral'] = Collateral.ISOLATED
|
||||||
exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance")
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance")
|
||||||
exchange.trading_mode = TradingMode.FUTURES
|
|
||||||
exchange.fill_leverage_brackets()
|
exchange.fill_leverage_brackets()
|
||||||
|
|
||||||
leverage_brackets_path = Path('freqtrade/data') / 'leverage_brackets.json'
|
assert exchange._leverage_brackets == {
|
||||||
with open(leverage_brackets_path) as json_file:
|
'ADA/BUSD': [[0.0, 0.025],
|
||||||
leverage_brackets = json.load(json_file)
|
[100000.0, 0.05],
|
||||||
|
[500000.0, 0.1],
|
||||||
for pair, brackets in leverage_brackets.items():
|
[1000000.0, 0.15],
|
||||||
leverage_brackets[pair] = [
|
[2000000.0, 0.25],
|
||||||
[
|
[5000000.0, 0.5]],
|
||||||
min_amount,
|
'BTC/USDT': [[0.0, 0.004],
|
||||||
float(margin_req)
|
[50000.0, 0.005],
|
||||||
] for [
|
[250000.0, 0.01],
|
||||||
min_amount,
|
[1000000.0, 0.025],
|
||||||
margin_req
|
[5000000.0, 0.05],
|
||||||
] in brackets
|
[20000000.0, 0.1],
|
||||||
]
|
[50000000.0, 0.125],
|
||||||
|
[100000000.0, 0.15],
|
||||||
assert exchange._leverage_brackets == leverage_brackets
|
[200000000.0, 0.25],
|
||||||
|
[300000000.0, 0.5]],
|
||||||
# assert exchange._leverage_brackets == {
|
"ZEC/USDT": [[0.0, 0.01],
|
||||||
# 'ADA/BUSD': [[0.0, 0.025],
|
[5000.0, 0.025],
|
||||||
# [100000.0, 0.05],
|
[25000.0, 0.05],
|
||||||
# [500000.0, 0.1],
|
[100000.0, 0.1],
|
||||||
# [1000000.0, 0.15],
|
[250000.0, 0.125],
|
||||||
# [2000000.0, 0.25],
|
[1000000.0, 0.5]],
|
||||||
# [5000000.0, 0.5]],
|
}
|
||||||
# 'BTC/USDT': [[0.0, 0.004],
|
|
||||||
# [50000.0, 0.005],
|
|
||||||
# [250000.0, 0.01],
|
|
||||||
# [1000000.0, 0.025],
|
|
||||||
# [5000000.0, 0.05],
|
|
||||||
# [20000000.0, 0.1],
|
|
||||||
# [50000000.0, 0.125],
|
|
||||||
# [100000000.0, 0.15],
|
|
||||||
# [200000000.0, 0.25],
|
|
||||||
# [300000000.0, 0.5]],
|
|
||||||
# "ZEC/USDT": [[0.0, 0.01],
|
|
||||||
# [5000.0, 0.025],
|
|
||||||
# [25000.0, 0.05],
|
|
||||||
# [100000.0, 0.1],
|
|
||||||
# [250000.0, 0.125],
|
|
||||||
# [1000000.0, 0.5]],
|
|
||||||
# }
|
|
||||||
|
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
api_mock.load_leverage_brackets = MagicMock()
|
api_mock.load_leverage_brackets = MagicMock()
|
||||||
@ -291,12 +274,22 @@ def test_fill_leverage_brackets_binance(default_conf, mocker):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_fill_leverage_brackets_binance_dryrun(default_conf, mocker):
|
||||||
|
api_mock = MagicMock()
|
||||||
|
default_conf['trading_mode'] = TradingMode.FUTURES
|
||||||
|
default_conf['collateral'] = Collateral.ISOLATED
|
||||||
|
exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance")
|
||||||
|
exchange.fill_leverage_brackets()
|
||||||
|
|
||||||
|
assert exchange._leverage_brackets == leverage_brackets()
|
||||||
|
|
||||||
|
|
||||||
def test__set_leverage_binance(mocker, default_conf):
|
def test__set_leverage_binance(mocker, default_conf):
|
||||||
|
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
api_mock.set_leverage = MagicMock()
|
api_mock.set_leverage = MagicMock()
|
||||||
type(api_mock).has = PropertyMock(return_value={'setLeverage': True})
|
type(api_mock).has = PropertyMock(return_value={'setLeverage': True})
|
||||||
|
default_conf['dry_run'] = False
|
||||||
exchange = get_patched_exchange(mocker, default_conf, id="binance")
|
exchange = get_patched_exchange(mocker, default_conf, id="binance")
|
||||||
exchange._set_leverage(3.0, trading_mode=TradingMode.MARGIN)
|
exchange._set_leverage(3.0, trading_mode=TradingMode.MARGIN)
|
||||||
|
|
||||||
|
@ -3076,6 +3076,7 @@ def test__set_leverage(mocker, default_conf, exchange_name, trading_mode):
|
|||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
api_mock.set_leverage = MagicMock()
|
api_mock.set_leverage = MagicMock()
|
||||||
type(api_mock).has = PropertyMock(return_value={'setLeverage': True})
|
type(api_mock).has = PropertyMock(return_value={'setLeverage': True})
|
||||||
|
default_conf['dry_run'] = False
|
||||||
|
|
||||||
ccxt_exceptionhandlers(
|
ccxt_exceptionhandlers(
|
||||||
mocker,
|
mocker,
|
||||||
@ -3099,6 +3100,7 @@ def test_set_margin_mode(mocker, default_conf, collateral):
|
|||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
api_mock.set_margin_mode = MagicMock()
|
api_mock.set_margin_mode = MagicMock()
|
||||||
type(api_mock).has = PropertyMock(return_value={'setMarginMode': True})
|
type(api_mock).has = PropertyMock(return_value={'setMarginMode': True})
|
||||||
|
default_conf['dry_run'] = False
|
||||||
|
|
||||||
ccxt_exceptionhandlers(
|
ccxt_exceptionhandlers(
|
||||||
mocker,
|
mocker,
|
||||||
@ -3130,7 +3132,6 @@ def test_set_margin_mode(mocker, default_conf, collateral):
|
|||||||
# TODO-lev: Remove once implemented
|
# TODO-lev: Remove once implemented
|
||||||
("binance", TradingMode.MARGIN, Collateral.CROSS, True),
|
("binance", TradingMode.MARGIN, Collateral.CROSS, True),
|
||||||
("binance", TradingMode.FUTURES, Collateral.CROSS, True),
|
("binance", TradingMode.FUTURES, Collateral.CROSS, True),
|
||||||
("binance", TradingMode.FUTURES, Collateral.ISOLATED, True),
|
|
||||||
("kraken", TradingMode.MARGIN, Collateral.CROSS, True),
|
("kraken", TradingMode.MARGIN, Collateral.CROSS, True),
|
||||||
("kraken", TradingMode.FUTURES, Collateral.CROSS, True),
|
("kraken", TradingMode.FUTURES, Collateral.CROSS, True),
|
||||||
("ftx", TradingMode.MARGIN, Collateral.CROSS, True),
|
("ftx", TradingMode.MARGIN, Collateral.CROSS, True),
|
||||||
@ -3139,7 +3140,7 @@ def test_set_margin_mode(mocker, default_conf, collateral):
|
|||||||
# TODO-lev: Uncomment once implemented
|
# TODO-lev: Uncomment once implemented
|
||||||
# ("binance", TradingMode.MARGIN, Collateral.CROSS, False),
|
# ("binance", TradingMode.MARGIN, Collateral.CROSS, False),
|
||||||
# ("binance", TradingMode.FUTURES, Collateral.CROSS, False),
|
# ("binance", TradingMode.FUTURES, Collateral.CROSS, False),
|
||||||
# ("binance", TradingMode.FUTURES, Collateral.ISOLATED, False),
|
("binance", TradingMode.FUTURES, Collateral.ISOLATED, False),
|
||||||
# ("kraken", TradingMode.MARGIN, Collateral.CROSS, False),
|
# ("kraken", TradingMode.MARGIN, Collateral.CROSS, False),
|
||||||
# ("kraken", TradingMode.FUTURES, Collateral.CROSS, False),
|
# ("kraken", TradingMode.FUTURES, Collateral.CROSS, False),
|
||||||
# ("ftx", TradingMode.MARGIN, Collateral.CROSS, False),
|
# ("ftx", TradingMode.MARGIN, Collateral.CROSS, False),
|
||||||
|
1215
tests/leverage_brackets.py
Normal file
1215
tests/leverage_brackets.py
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user