我有一张名为Tickers的xls表(矩阵1列500行),带有雅虎代码。我希望matlab将每个股票代码的最近5年的历史数据下载到一个单独的xls电子表格中,并将其保存在一个给定的目录中,标题为sheet = ticker。这意味着我想要一个能够在500个单独的传播中创建和保存500个代码数据的代码:)任何人都可以帮忙或指导吗?
答案 0 :(得分:0)
如果您拥有Datafeed Toolbox,则可以使用它从Yahoo下载历史财务数据。
以下是仅使用三个代码的示例,但可以轻松更改以从文件中读取值并应用于您拥有的所有500个代码:
endDate = date; %# today
startDate = datestr(addtodate(datenum(endDate),-1,'year')); %# last year
tickers = {'GOOG' 'IBM' 'AAPL'};
headers = {'Date' 'Open' 'High' 'Low' 'Close' 'Volume' 'Adj Close'};
y = yahoo;
for i=1:numel(tickers)
%# fetch daily data
data = fetch(y, tickers{i}, startDate, endDate, 'd');
%# format dates, and add header row
A = [headers; cellstr(datestr(data(:,1))) num2cell(data(:,2:end))];
%# write to XLS file
xlswrite([tickers{i} '.xls'], A);
end
close(y);
您获得的数据示例:
>> A
A =
'Date' 'Open' 'High' 'Low' 'Close' 'Volume' 'Adj Close'
'21-Nov-2011' [ 370.4] [371.68] [365.91] [369.01] [15999300] [ 369.01]
'18-Nov-2011' [378.92] [379.99] [374.88] [374.94] [13283500] [ 374.94]
'17-Nov-2011' [383.98] [384.58] [ 375.5] [377.41] [17139300] [ 377.41]
'16-Nov-2011' [389.25] [391.14] [384.32] [384.77] [12449900] [ 384.77]
'15-Nov-2011' [ 380.8] [ 389.5] [379.45] [388.83] [15386100] [ 388.83]
...