我注意到使用Python时获取现货价格的数据端点返回了错误的货币信息。我使用 BTC-USD 的 currency_pair ,但获取 GBP 的结果。
示例:
{
"amount": "5578.85",
"base": "BTC",
"currency": "GBP"
}
响应:
{{1}}
关于什么导致这个问题的想法?
答案 0 :(得分:1)
虽然不使用官方Coinbase客户端,但解决方法如下:
import requests
import json
# Do This to Avoid Warning
headers = {
'CB-VERSION': '2017-12-08'
}
# Make Request
data = requests.get('https://api.coinbase.com/v2/prices/BTC-USD/sell/', headers=headers).text
# Parse Response, Get Amount
price = json.loads(data)['data']['amount]
在处理错误,例外或任何其他类型的断言(显然是官方客户应该拥有的)方面显然不是非常强大,以提供实际购买/出售/转让所需的信心。 / p>
编辑:更新
显然这是一个已知问题:
请阅读:
https://github.com/coinbase/coinbase-python/issues/32
据说已经修复了github master
,但显然还没有反映在pip
版本中。
引用用户kflecki:
我通过进入client.py文件并修改代码来修复此问题。现在工作得很好,但是对于这样的文件会很好。但这是一个你可以自己做的简单修复。
def get_spot_price(self, **params):
"""https://developers.coinbase.com/api/v2#get-spot-price"""
if 'currency_pair' in params:
currency_pair = params['currency_pair']
else:
currency_pair = 'BTC-USD'
response = self._get('v2', 'prices', currency_pair, 'spot', data=params)
return self._make_api_object(response, APIObject)
现在这个命令就像这样:
eth_price = client.get_spot_price(currency_pair = 'ETH-USD')