Как получить исторические данные для курсов обмена валют через Yahoo Finance?
Мне нужно получить ответ JSON или XML с хронологией обменных курсов валют, например, с 2015-01-07 по 2015-03-07.
Используя этот ответ, мы можем получить самую последнюю информацию о курсах обмена валют для выбранных валют.
Здесь мы можем получить обменные курсы валют на определенную дату, используя URL-адрес:
http://finance.yahoo.com/connection/currency-converter-cache?date=20150307
и разбора полученного JSON для определенной валюты.
Но мне нужно получить обменные курсы валют для диапазона дат, так как это здесь, но в формате JSON или XML.
Есть ли способ сделать это?
Ответы
Ответ 1
Используйте 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"
Проверить здесь
Ответ 2
Вот решение, чтобы получить ваши данные в pandas DataFrame. Затем вы можете экспортировать из DataFrame в JSON, XML и т.д., Используя такие функции, как pandas.DataFrame.to_json.
Символы также могут отличаться от символов, которые вы используете.
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. (Я предполагаю, что у вас уже есть pandas).
sudo -H pip install pandas-datareader (ubuntu)
pip install pandas-datareader (windows)
Ответ 3
Yahoo API больше не работает, однако есть другие API, которые предоставляют данные о валютах в формате JSON. FXMarketAPI является единственным API, который предлагает Pandas-совместимый API, который предоставляет исторические данные в формате JSON. Существует конечная точка Pandas, которая помогает вам извлекать данные. Хотя есть ограничение в 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 и добавить к вышеуказанному запросу.