まず、ドキュメントを注意深く読んだ場合:
注 複数の証券の履歴データを一度に取得することは、Yahoo ではサポートされていません。一度に取得できる証券の履歴データは 1 つだけです。
そのため、一度に 1 つずつ指定する必要があります...
他の部分については、ここに私が試した例があります:
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を使用しています。XML/JSON を返すYQLを使用してデータにアクセスするための新しい REST ベースの API がありますが、私はその経験がありません。ただし、いじることができるYQLコンソールがあります...
HTH
更新 (2017 年 4 月)
上記を MATLAB R2016b でテストしたところ、Yahoo Finance 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 コンソールを直接使用してみました。
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 エンドポイントが下で使用されます。興味がある場合は、URL のパラメーターの意味の手がかりをいくつか示します)。
サポートされている通貨記号のリストを探している場合は、次の API 呼び出しを参照してください。
http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote
価値のあるものとして、Yahoo Finance API は公共サービスとして使用されることを意図していなかったようです! この答えを引用するには:
ドキュメントがないのは、Finance API がないためです。財務データをプルするために使用する API をリバース エンジニアリングした人もいるようですが、これは当社の利用規約 (財務データの再配布なし) に違反しているため、これらの Web サービスの使用を避けることをお勧めします。
今後壊れないという保証はありませんが…