2017-10-13 97 views
2

必须是一个新手问题。 试图获取coinbase上的历史每日现货价格。 使用api的python实现如下。Coinbase - get_spot_price - 历史

https://developers.coinbase.com/api/v2#get-spot-price

price = client.get_spot_price(currency_pair= 'BTC-USD', date='2016-5-10') 

结果(实际上今天的价格):

2016-5-10 
{ 
    "amount": "5613.84", 
    "base": "BTC", 
    "currency": "USD" 
} 

我得到当前的现货价格。任何人都可以点亮我所缺少的东西吗? 谢谢!

回答

0

从API:

指定日期的历史现货价格在格式YYYY-MM-DD(UTC)

可能是你需要指定2位数字为月

price = client.get_spot_price(currency_pair= 'BTC-USD', date='2016-05-10') 
+0

看起来很好的语法,但不幸的是没有效果。 – Joseph

+0

然后在这种情况下,它看起来像是一个API中的错误,所以我建议打开一个针对您正在使用的Python API的问题。 – KymikoLoco

1

如果您只需点击自己的URI,它工作正常:

https://api.coinbase.com/v2/prices/BTC-USD/spot?date=2017-05-10

,给出了一个合理的答案(加上我们可以忽略这个问题的目的,警告):

{"data":{"base":"BTC","currency":"USD","amount":"1758.04"},"warnings":[{"id":"missing_version","message":"Please supply API version (YYYY-MM-DD) as CB-VERSION header","url":"https://developers.coinbase.com/api#versioning"}]} 

所以沿着你做出错误的查询方式某处。无论是图书馆是坏的,还是以一种非你所说的方式使用它。尝试上面的URL,然后尝试使用Wireshark这样的工具来查看基于库的解决方案正在查询的内容。

1

我发现API无法将参数传递给json请求。 这是抛出参数字典在'clean_params'函数总是返回一个空的字典。

在API文件util.py线31

def encode_params(params, **kwargs): 
    """Clean and JSON-encode a dict of parameters.""" 
    cleaned = clean_params(params, **kwargs) 
    return json.dumps(params) # changed from cleaned (was empty) to params 

我知道这是不是干净,但它的工作原理。

price = client.get_spot_price(currency_pair = 'BTC-USD',date='2014-05-10') 

{ 
    "amount": "453.19", 
    "base": "BTC", 
    "currency": "USD" 
} 
+0

谢谢@farbion驱动,虽然我没有看到任何改变 – Joseph