MCPcopy Create free account
hub / github.com/ccxt/ccxt / parse_balance_custom

Method parse_balance_custom

python/ccxt/binance.py:3665–3765  ·  view source on GitHub ↗
(self, response, type=None, marginMode=None, isPortfolioMargin=False)

Source from the content-addressed store, hash-verified

3663 return account
3664
3665 def parse_balance_custom(self, response, type=None, marginMode=None, isPortfolioMargin=False) -> Balances:
3666 result = {
3667 'info': response,
3668 }
3669 timestamp = None
3670 isolated = marginMode == 'isolated'
3671 cross = (type == 'margin') or (marginMode == 'cross')
3672 if isPortfolioMargin:
3673 for i in range(0, len(response)):
3674 entry = response[i]
3675 account = self.account()
3676 currencyId = self.safe_string(entry, 'asset')
3677 code = self.safe_currency_code(currencyId)
3678 if type == 'linear':
3679 account['free'] = self.safe_string(entry, 'umWalletBalance')
3680 account['used'] = self.safe_string(entry, 'umUnrealizedPNL')
3681 elif type == 'inverse':
3682 account['free'] = self.safe_string(entry, 'cmWalletBalance')
3683 account['used'] = self.safe_string(entry, 'cmUnrealizedPNL')
3684 elif cross:
3685 borrowed = self.safe_string(entry, 'crossMarginBorrowed')
3686 interest = self.safe_string(entry, 'crossMarginInterest')
3687 account['debt'] = Precise.string_add(borrowed, interest)
3688 account['free'] = self.safe_string(entry, 'crossMarginFree')
3689 account['used'] = self.safe_string(entry, 'crossMarginLocked')
3690 account['total'] = self.safe_string(entry, 'crossMarginAsset')
3691 else:
3692 usedLinear = self.safe_string(entry, 'umUnrealizedPNL')
3693 usedInverse = self.safe_string(entry, 'cmUnrealizedPNL')
3694 totalUsed = Precise.string_add(usedLinear, usedInverse)
3695 totalWalletBalance = self.safe_string(entry, 'totalWalletBalance')
3696 account['total'] = Precise.string_add(totalUsed, totalWalletBalance)
3697 result[code] = account
3698 elif not isolated and ((type == 'spot') or cross):
3699 timestamp = self.safe_integer(response, 'updateTime')
3700 balances = self.safe_list_2(response, 'balances', 'userAssets', [])
3701 for i in range(0, len(balances)):
3702 balance = balances[i]
3703 currencyId = self.safe_string(balance, 'asset')
3704 code = self.safe_currency_code(currencyId)
3705 account = self.account()
3706 account['free'] = self.safe_string(balance, 'free')
3707 account['used'] = self.safe_string(balance, 'locked')
3708 if cross:
3709 debt = self.safe_string(balance, 'borrowed')
3710 interest = self.safe_string(balance, 'interest')
3711 account['debt'] = Precise.string_add(debt, interest)
3712 result[code] = account
3713 elif isolated:
3714 assets = self.safe_list(response, 'assets', [])
3715 for i in range(0, len(assets)):
3716 asset = assets[i]
3717 marketId = self.safe_string(asset, 'symbol')
3718 symbol = self.safe_symbol(marketId, None, None, 'spot')
3719 base = self.safe_dict(asset, 'baseAsset', {})
3720 quote = self.safe_dict(asset, 'quoteAsset', {})
3721 baseCode = self.safe_currency_code(self.safe_string(base, 'asset'))
3722 quoteCode = self.safe_currency_code(self.safe_string(quote, 'asset'))

Callers 1

fetch_balanceMethod · 0.95

Calls 14

parse_balance_helperMethod · 0.95
safe_stringMethod · 0.80
string_addMethod · 0.80
safe_integerMethod · 0.80
safe_list_2Method · 0.80
safe_listMethod · 0.80
safe_symbolMethod · 0.80
safe_dictMethod · 0.80
safe_balanceMethod · 0.80
safe_string_2Method · 0.80
rangeFunction · 0.50
accountMethod · 0.45

Tested by

no test coverage detected