如何通过Coinbase API提取主账户BTC余额的amount字段值
解决方案
问题1:BTC账户未出现在返回结果的修复方法
- 先确认API密钥权限:你创建的Coinbase API密钥必须勾选
wallet:accounts:read权限,权限不足会导致部分账户数据被隐藏 - 调整分页拉取数量:
get_accounts默认单次最多返回25条账户数据,如果你持有的币种超过25个,BTC账户可能落在后续分页,直接调高limit参数即可一次性拉取最多200个账户:accounts = client.get_accounts(limit=200) - 确认账户余额状态:Coinbase默认不返回余额为0的账户,确认你的BTC账户当前有余额才会被接口返回
问题2:提取BTC余额并转为float类型的实现方法
有两种常用实现方案,按需选择即可:
方案1:遍历所有账户提取BTC余额
适合你需要同时统计多币种余额,或者主账户不是BTC账户的场景:
accounts = client.get_accounts(limit=200) btc_balance = 0.0 for wallet in accounts.data: # 匹配BTC币种,如需排除金库账户可添加 and wallet['type'] == 'wallet' 条件 if wallet['currency'] == 'BTC': btc_balance = float(wallet['balance']['amount']) print(f"BTC账户名称:{wallet['name']},余额:{btc_balance} BTC")
方案2:用get_primary_account()直接获取主账户BTC余额
get_primary_account()会直接返回你在Coinbase后台设置的主账户,不需要遍历所有账户,代码更简洁:
primary_account = client.get_primary_account() # 判断主账户是否为BTC账户 if primary_account['currency'] == 'BTC': btc_balance = float(primary_account['balance']['amount']) print(f"BTC主账户余额:{btc_balance} BTC") else: # 主账户非BTC时 fallback到遍历方案 accounts = client.get_accounts(limit=200) for wallet in accounts.data: if wallet['currency'] == 'BTC' and wallet['primary']: btc_balance = float(wallet['balance']['amount']) print(f"BTC主账户余额:{btc_balance} BTC")
补充说明
你之前的代码没打印出BTC,是因为默认返回条数限制导致BTC账户不在前25条结果里,加上你打印的是法币计价的native_balance,没有做币种过滤导致遗漏。
内容的提问来源于stack exchange,提问作者stonethurg
相关产品推荐
相关产品推荐

