如何将yahoo历史股票数据下载到xls中。格式通过matlab?

时间:2011-11-22 17:46:10

标签: excel matlab file-io yahoo-finance

我有一张名为Tickers的xls表(矩阵1列500行),带有雅虎代码。我希望matlab将每个股票代码的最近5年的历史数据下载到一个单独的xls电子表格中,并将其保存在一个给定的目录中,标题为sheet = ticker。这意味着我想要一个能够在500个单独的传播中创建和保存500个代码数据的代码:)任何人都可以帮忙或指导吗?

1 个答案:

答案 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]
    ...