首先,如果您仔细阅读文档:
注意一次检索多个证券的历史数据
不支持雅虎。您只能获取历史数据
一次只有一个安全性。
所以你必须一次指定一个...
至于其他部分,这是我试过的一个例子:
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',你会得到错误:
无法返回给定安全性的历史数据。
通过单步执行代码,用于获取数据的 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 用于使用返回 XML/JSON 的 YQL 访问数据,但我没有这方面的经验。有一个 YQL console 你可以玩玩...
HTH
更新(2017 年 4 月)
我刚刚在 MATLAB R2016b 中测试了上述内容,在 Yahoo Finance API 中似乎发生了一些变化;它不再返回历史货币汇率如果基础不是美元。换句话说,使用的符号只能是???=X 的形式(其中??? 是三个字母的代码):
% 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 Not Found”错误
(顺便说一句,YQL 查询在下面使用相同的 CSV 端点。如果您感兴趣,这里是 some clues 对 URL 中参数的含义)。 p>
如果您正在寻找支持的货币符号列表,请参阅此 API 调用:
http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote
不管怎样,Yahoo Finance API 似乎从来没有打算用作公共服务!引用this answer:
缺少文档的原因是我们没有 Finance API。似乎有些人对用于提取财务数据的 API 进行了逆向工程,但他们这样做违反了我们的服务条款(不重新分发财务数据),因此我建议您避免使用这些网络服务。
所以不能保证它在未来不会崩溃......