首先,如果你仔細閱讀文檔:
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