如何通过雅虎财经获取货币汇率的历史数据?

时间:2015-03-07 19:23:17

标签: api yahoo-finance

我需要使用货币汇率的年表来获取JSON或XML响应,例如,从2015-01-07到2015-03-07。

使用this answer,我们可以获得所选货币的最新货币汇率信息。

Here我们可以使用以下网址获取特定日期的货币汇率: http://finance.yahoo.com/connection/currency-converter-cache?date=20150307 并为特定货币解析获得的JSON。

但我需要获得日期范围内的货币汇率,因为它是here,但是采用JSON或XML格式。

有办法吗?

5 个答案:

答案 0 :(得分:12)

使用YQL(https://developer.yahoo.com/yql/

然后,您可以使用如下查询检索所需的数据:

SELECT * 
FROM 
    yahoo.finance.historicaldata 
WHERE 
    symbol = "EUR=X" 
AND 
    startDate = "2009-09-11" 
AND 
    endDate = "2010-03-10"

Check here

答案 1 :(得分:2)

以下是将数据导入pandas DataFrame的解决方案。然后,您可以使用pandas.DataFrame.to_json等函数从DataFrame导出到JSON,XML等。

符号也可能与您使用的符号不同。

// .work_detail_wraper contains the text you down want to see scrolling
$('.work_detail_wraper') 
  .on('mousewheel DOMMouseScroll' , function(e) { 
     e.stopPropagation() 
  })

您需要安装pandas-datareader。 (我假设你已经有了熊猫)。

import pandas as pd
import pandas_datareader.data as web
from datetime import datetime

start = datetime(2016, 1, 1)
end = datetime(2017, 3, 31)
aud = web.DataReader('AUD=X', 'yahoo', start, end)

In [29]: aud.head(5)
Out[29]: 
              Open    High     Low   Close  Volume  Adj Close
Date                                                         
2016-01-01  1.3752  1.3752  1.3752  1.3752       0     1.3752
2016-01-04  1.3725  1.3950  1.3712  1.3723       0     1.3723
2016-01-05  1.3921  1.4017  1.3857  1.3916       0     1.3916
2016-01-06  1.3963  1.4168  1.3941  1.3961       0     1.3961
2016-01-07  1.4124  1.4322  1.4109  1.4124       0     1.4124

答案 2 :(得分:1)

对于最简单的解决方案,应使用CurrencyFreaks API。它以JSON和XML格式提供了全球179种货币的历史汇率,与各种编程语言兼容 例如Shell,Node.js,Java,JS,Python,PHP,Ruby,C,C#,Go,Swift

要获取两个日期之间的历史汇率,它会提供一个time-series endpoint

$ curl 'https://api.currencyfreaks.com/timeseries?apikey=YOUR_APIKEY&start_date=2016-01-07&end_date=2016-03-07&base=EUR&symbols=EUR,USD'

JSON响应将是:

{
    "start_date": "2016-01-07",
    "end_date": "2016-01-10",
    "base": "EUR",
    "rates": {
        "2016-01-07 00:00:00+00": {
            "EUR": "1.0",
            "USD": "1.0776"
        },
        "2016-01-08 00:00:00+00": {
            "EUR": "1.0",
            "USD": "1.0921"
        },
        "2016-01-09 00:00:00+00": {
            "EUR": "1.0",
            "USD": "1.0932"
        },
        "2016-01-10 00:00:00+00": {
            "EUR": "1.0",
            "USD": "1.0932"
        }
    }
}

要获取特定日期的历史汇率,请使用historical rates endpoint.

我希望它对您有用。

答案 3 :(得分:0)

Yahoo API不再起作用,但是还有其他API以JSON格式提供货币数据。 FXMarketAPI是唯一提供与Pandas兼容的API的API,该API以JSON格式提供历史数据。有一个熊猫端点可以帮助您提取数据。虽然免费用户有1000个请求的限制。您可以在下面看到一个示例。

URL = "https://fxmarketapi.com/apipandas"
params = {'currency' : 'EURUSD',
'start_date' : '2018-07-02',
'end_date':'2018-12-06',
'api_key':'**************'}

response = requests.get("https://fxmarketapi.com/apipandas", params=params)
df= pd.read_json(response.text)

请记住可以访问api_key并添加到上述请求中。

答案 4 :(得分:0)

Yahoo curreny API已停产。

有几种替代API提供货币换算数据。我建议的一种选择是SWOP currency exchange rate API,这是一种由开发人员为开发人员制作的快速,易于使用,可靠且透明的外汇API。

完全免责声明:我是创建SWOP的开发人员之一:)

  • SWOP API提供180多种货币的当前和历史汇率。它们是直接从可信任的来源(各种中央银行和其他重要银行)收集的。
  • 为了方便开发人员,SWOP API具有两个端点GraphQL和REST / JSON。
  • 有一个免费计划,每月允许1,000个请求,为更多请求和功能提供付费计划。