From cbaf477bec00071877eb3946b8b2c89ec15c7ac4 Mon Sep 17 00:00:00 2001 From: Sam Germain Date: Wed, 15 Sep 2021 21:55:19 -0600 Subject: [PATCH] changed kraken set lev implementation --- freqtrade/exchange/exchange.py | 13 +++++++++---- freqtrade/exchange/kraken.py | 10 ++++++---- tests/exchange/test_exchange.py | 8 +++++++- tests/exchange/test_kraken.py | 12 ------------ 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 0c3b29e1a..554873100 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -775,6 +775,13 @@ class Exchange: self.set_margin_mode(pair, self.collateral) self._set_leverage(leverage, pair) + def _get_params(self, time_in_force: str, ordertype: str, leverage: float) -> Dict: + params = self._params.copy() + if time_in_force != 'gtc' and ordertype != 'market': + param = self._ft_has.get('time_in_force_parameter', '') + params.update({param: time_in_force}) + return params + def create_order(self, pair: str, ordertype: str, side: str, amount: float, rate: float, time_in_force: str = 'gtc', leverage=1.0) -> Dict: @@ -784,10 +791,8 @@ class Exchange: if self.trading_mode != TradingMode.SPOT: self.lev_prep(pair, leverage) - params = self._params.copy() - if time_in_force != 'gtc' and ordertype != 'market': - param = self._ft_has.get('time_in_force_parameter', '') - params.update({param: time_in_force}) + + params = self._get_params(time_in_force, ordertype, leverage) try: # Set the precision for amount and price(rate) as accepted by the exchange diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 661000d4d..60af42c69 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -182,8 +182,10 @@ class Kraken(Exchange): Kraken set's the leverage as an option in the order object, so we need to add it to params """ + return + + def _get_params(self, time_in_force: str, ordertype: str, leverage: float) -> Dict: + params = super()._get_params(time_in_force, ordertype, leverage) if leverage > 1.0: - self._params['leverage'] = leverage - else: - if 'leverage' in self._params: - del self._params['leverage'] + params['leverage'] = leverage + return params diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 535726b4b..8c7f908b2 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1110,7 +1110,13 @@ def test_create_order(default_conf, mocker, side, ordertype, rate, marketprice, exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order = exchange.create_order( - pair='ETH/BTC', ordertype=ordertype, side=side, amount=1, rate=200) + pair='ETH/BTC', + ordertype=ordertype, + side=side, + amount=1, + rate=200, + leverage=3.0 + ) assert 'id' in order assert 'info' in order diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 374b054a6..74a06c96c 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -305,15 +305,3 @@ def test_fill_leverage_brackets_kraken(default_conf, mocker): 'XLTCUSDT': [1], 'LTC/ETH': [1] } - - -def test__set_leverage_kraken(default_conf, mocker): - exchange = get_patched_exchange(mocker, default_conf, id="kraken") - exchange._set_leverage(1) - assert 'leverage' not in exchange._params - exchange._set_leverage(3) - assert exchange._params['leverage'] == 3 - exchange._set_leverage(1.0) - assert 'leverage' not in exchange._params - exchange._set_leverage(3.0) - assert exchange._params['leverage'] == 3