首先,如果你仔细阅读文档:
Note Retrieving historical data for multiple securities at one time is not supported for Yahoo. You can fetch historical data for only a single security at a time.
所以,你必须指定一次一个......
至于其他部分,这里是我试过一个例子:
conn = yahoo;
data = fetch(conn, 'EURUSD=X', '01-Jun-2011', datestr(now,'dd-mmm-yyyy'), 'd');
close(conn)
d = [
{'date' 'open' 'high' 'low' 'close' 'volume' 'adj-close'}
cellstr(datestr(data(:,1))) num2cell(data(:,2:end))
];
我得到:
>> d =
'date' 'open' 'high' 'low' 'close' 'volume' 'adj-close'
'15-Jul-2011' [1.41] [1.41] [1.41] [ 1.41] [ 0] [ 1.41]
'14-Jul-2011' [1.42] [1.42] [1.42] [ 1.42] [ 0] [ 1.42]
....
'02-Jun-2011' [1.45] [1.45] [1.45] [ 1.45] [ 0] [ 1.45]
'01-Jun-2011' [1.44] [1.44] [1.44] [ 1.44] [ 0] [ 1.44]
但是对于相反的转换'USDEUR=X'
,您会收到错误:
Unable to return historical data for given security.
通过通过代码,用来获取数据的URL步进为:
http://ichart.yahoo.com/table.csv?s=EURUSD=X&a=5&b=1&c=2011&d=6&e=16&f=2011&g=d&ignore=.csv
粘贴在你喜欢的浏览器,你会得到一个CSV与预期数据文件。如果将其从EURUSD
更改为USDEUR
,则会发生404错误:Sorry, the page you requested was not found.
。
我不知道如果这些都是正确的代码,但我想:JPY=X
,CAD=X
,EUR=X
,GBP=X
,他们都返回有效结果...
作为一个方面说明:我已经做了一个快速的研究,从我的理解,MATLAB的功能是使用旧的Yahoo CSV API。有一个更新的基于REST的API用于访问使用YQL的数据,该数据返回XML/JSON,但我没有这方面的经验。有一个YQL console你可以玩的,但...
HTH
更新(2017年4月)
我只是测试上述在MATLAB R2016b,似乎什么东西在改变雅虎财经API;如果基数不是USD,则不再返回历史货币汇率。换句话说,使用的符号只能是形式???=X
(其中???
是3个字母代码):
% US dollar to euro
data = fetch(conn, 'EUR=X', '01-Jun-2011', datestr(now,'dd-mmm-yyyy'), 'd');
% format as table
t = array2table(data, 'VariableNames',{'date' 'open' 'high' 'low' 'close' 'volume' 'adjclose'});
t.date = cellstr(datestr(t.date));
disp(t)
请求,如果你不指定日期或日期范围EURUSD=X
或USDEUR=X
只能:
data = fetch(conn, 'EURUSD=X')
data = fetch(conn, 'USDEUR=X')
为了确认,我尝试使用YQL控制台直接与query这样的:
SELECT *
FROM
yahoo.finance.historicaldata
WHERE
symbol = "EUR=X"
AND
startDate = "2017-01-01"
AND
endDate = "2017-04-11"
有类似的结果。如果更改符号USDEUR=X
你得到的结果
“404未找到”错误(BTW的YQL查询使用相同的CSV端点之下。如果你有兴趣,这里有someclues来的意思URL中的参数)。
如果您正在寻找支持的货币符号的列表,请参阅该API调用:
http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote
对于它的价值,它看来,雅虎财经API从来就不是被用作公共服务!引述this answer:
The reason for the lack of documentation is that we don't have a Finance API. It appears some have reverse engineered an API that they use to pull Finance data, but they are breaking our Terms of Service (no redistribution of Finance data) in doing this so I would encourage you to avoid using these webservices.
所以不能保证它不会在未来的突破...
哇!非常感谢。我一次只能使用1个安全性。 –
@heavyrockerdude:很高兴我能帮上忙。考虑将其标记为接受的答案,如果您觉得这已经解决了您的问题... – Amro
不适用于我。这可能过时了吗? – JohnAndrews