set the level of leverage for a market :param float leverage: the rate of leverage :param str symbol: unified market symbol :param dict [params]: extra parameters specific to the exchange API endpoint :param str [params.marginMode]: margin mode must be either
(self, leverage: int, symbol: Str = None, params={})
| 3590 | return response |
| 3591 | |
| 3592 | def set_leverage(self, leverage: int, symbol: Str = None, params={}): |
| 3593 | """ |
| 3594 | set the level of leverage for a market |
| 3595 | :param float leverage: the rate of leverage |
| 3596 | :param str symbol: unified market symbol |
| 3597 | :param dict [params]: extra parameters specific to the exchange API endpoint |
| 3598 | :param str [params.marginMode]: margin mode must be either [isolated, cross], default is cross |
| 3599 | :returns dict: response from the exchange |
| 3600 | """ |
| 3601 | if symbol is None: |
| 3602 | raise ArgumentsRequired(self.id + ' setLeverage() requires a symbol argument') |
| 3603 | self.load_markets() |
| 3604 | market = self.market(symbol) |
| 3605 | marginMode = self.safe_string(params, 'marginMode', 'cross') |
| 3606 | isCross = (marginMode == 'cross') |
| 3607 | asset = self.parse_to_int(market['baseId']) |
| 3608 | nonce = self.milliseconds() |
| 3609 | params = self.omit(params, 'marginMode') |
| 3610 | updateAction = { |
| 3611 | 'type': 'updateLeverage', |
| 3612 | 'asset': asset, |
| 3613 | 'isCross': isCross, |
| 3614 | 'leverage': leverage, |
| 3615 | } |
| 3616 | vaultAddress = None |
| 3617 | vaultAddress, params = self.handle_option_and_params_2(params, 'setLeverage', 'vaultAddress', 'subAccountAddress') |
| 3618 | vaultAddress = self.format_vault_address(vaultAddress) |
| 3619 | signature = self.sign_l1_action(updateAction, nonce, vaultAddress) |
| 3620 | request = { |
| 3621 | 'action': updateAction, |
| 3622 | 'nonce': nonce, |
| 3623 | 'signature': signature, |
| 3624 | # 'vaultAddress': vaultAddress, |
| 3625 | } |
| 3626 | if vaultAddress is not None: |
| 3627 | params = self.omit(params, 'vaultAddress') |
| 3628 | request['vaultAddress'] = vaultAddress |
| 3629 | response = self.privatePostExchange(request) |
| 3630 | # |
| 3631 | # { |
| 3632 | # 'response': { |
| 3633 | # 'type': 'default' |
| 3634 | # }, |
| 3635 | # 'status': 'ok' |
| 3636 | # } |
| 3637 | # |
| 3638 | return response |
| 3639 | |
| 3640 | def add_margin(self, symbol: str, amount: float, params={}) -> MarginModification: |
| 3641 | """ |
nothing calls this directly
no test coverage detected