首页 文章

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

提问于
浏览
14

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

通过this answer,我们可以获得所选货币的最新货币汇率信息 .

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

But I need to get currency exchange rates for the range of dates as it is here but at the JSON or XML format.

有没有办法做到这一点?

3 回答

  • 0

    使用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

  • 12

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

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

    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
    

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

    sudo -H pip install pandas-datareader (ubuntu)
    pip install pandas-datareader (windows)
    
  • 2

    雅虎API不再起作用,但是有其他API以JSON格式提供货币数据 . FXMarketAPI是唯一提供Pandas兼容API的API,它以JSON格式提供历史数据 . 有一个pandas endpoints 可以帮助您提取数据 . 虽然对免费用户有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并添加到上面的请求中 .

相关问题