Как загрузить Yahoo исторические данные о запасах в xls.форматировать через matlab? - PullRequest
1 голос
/ 22 ноября 2011

У меня есть лист xls под названием Tickers (матрица 1, столбец 500 строк) с тикерами Yahoo. Я хочу, чтобы matlab загружал исторические данные за последние 5 лет для каждого биржевого тикера в отдельную электронную таблицу xls и сохранял ее в заданном каталоге с заголовком sheet = ticker. Это означает, что мне нужен код, который будет создавать и сохранять данные в 500 тикеров в 500 отдельных электронных таблицах :) Кто-нибудь может помочь или направить?

1 Ответ

0 голосов
/ 22 ноября 2011

Если у вас есть 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]
    ...
...