Как загрузить исторические данные по акциям Yahoo в xls. форматировать через матлаб?

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


person Noob_1    schedule 22.11.2011    source источник
comment
Приведите пример формата данных (первые 4 строки файла)   -  person abcde123483    schedule 22.11.2011
comment
Дата Открыть Высокий Низкий Закрыть Регулировка объема Закрыть   -  person Noob_1    schedule 22.11.2011


Ответы (1)


Если у вас есть панель инструментов Datafeed, вы можете использовать ее для загрузки исторических финансовых данных из 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]
    ...
person Amro    schedule 22.11.2011
comment
если у вас нет доступа к набору инструментов, вам придется вручную извлекать данные с помощью Yahoo CSV API (см. in-matlab/6718234#6718234">предыдущий ответ) - person Amro; 22.11.2011