【问题标题】:How to query binance margin account for unique symbol balance?如何查询币安保证金账户的唯一符号余额?
【发布时间】:2020-09-07 08:43:03
【问题描述】:

我目前可以使用 python-binance v0.7.5 中的代码成功查询我的保证金账户:

client.get_margin_account()

它返回保证金余额列表和列出交易所所有交易品种的信息列表,从最高到最低余额:

  {'tradeEnabled': True,
 'transferEnabled': True,
 'borrowEnabled': True,
 'marginLevel': '999.00000000',
 'totalAssetOfBtc': '0.00000000',
 'totalLiabilityOfBtc': '0.00000000',
 'totalNetAssetOfBtc': '0.00000000',
 'userAssets': [{'asset': 'BTC',
   'free': '0.00000000',
   'locked': '0.00000000',
   'borrowed': '0.00000000',
   'interest': '0.00000000',
   'netAsset': '0.00000000'},
  {'asset': 'ETH',
   'free': '0.00000000',
   'locked': '0.00000000',
   'borrowed': '0.00000000',
   'interest': '0.00000000',
   'netAsset': '0.00000000'}]}

我可以查询具体资产如下:

client.get_margin_account()['userAssets'][0]['free']

但是当我使用这段代码时:

client.get_margin_account()['userAssets']['btc']['free']

我收到此错误:

TypeError: list indices must be integers or slices, not str

如何在不指定索引位置的情况下查询我账户中的特定品种?

【问题讨论】:

    标签: python python-3.x list indexing binance


    【解决方案1】:

    选项1:使用next()

    data = {'tradeEnabled': True,
     'transferEnabled': True,
     'borrowEnabled': True,
     'marginLevel': '999.00000000',
     'totalAssetOfBtc': '0.00000000',
     'totalLiabilityOfBtc': '0.00000000',
     'totalNetAssetOfBtc': '0.00000000',
     'userAssets': [{'asset': 'BTC',
       'free': '0.00000000',
       'locked': '0.00000000',
       'borrowed': '0.00000000',
       'interest': '0.00000000',
       'netAsset': '0.00000000'},
      {'asset': 'ETH',
       'free': '0.00000000',
       'locked': '0.00000000',
       'borrowed': '0.00000000',
       'interest': '0.00000000',
       'netAsset': '0.00000000'}]}
    
    
    print( next(d for d in data['userAssets'] if d['asset'] == 'BTC')['free'] )
    

    选项 2:将 userAssets 转换为字典:

    ua = {d['asset']: d for d in data['userAssets']}
    print(ua['BTC']['free'])
    

    【讨论】:

    • 感谢您的回复,当我的代码为:next(x for x in client.get_margin_account['userAssets'] if x['asset'] == 'BTC')['free'] 我得到一个错误:TypeError: 'method' object is not subscriptable
    • @Mitch 你可能指的是client.get_margin_account('userAssets'),而不是['userAssets']
    • 更新了代码中的括号,现在得到:TypeError: get_margin_account() takes 1 positional argument but 2 were given
    • @Mitch 看,get_margin_account() 方法是如何定义的。从错误消息中它需要 1 个参数,但您提供了 2 个。
    • 即使我在保证金账户中有一个未平仓头寸也不知道为什么,此保留为我返回0
    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2016-03-17
    • 2019-12-15
    • 2021-12-06
    • 2017-10-19
    相关资源
    最近更新 更多