Yahoo获取数据MATLAB
我有证券公司的名单。我想下载收盘价并将其存储到变量中。我写了这个剧本:Yahoo获取数据MATLAB,matlab,yahoo,Matlab,Yahoo,我有证券公司的名单。我想下载收盘价并将其存储到变量中。我写了这个剧本: function y=fetchDataFromYahoo() ticker={'ABFS','TCB','NE','FGP'};%,'IMO','CAJ','CAG','GMCR','HSH','HAIN','SIM'}; c=yahoo; for i=1:4 Price.(ticker{i})=fetch(c,ticker(i),'Adj Close','Jan 1 00','Ap
function y=fetchDataFromYahoo()
ticker={'ABFS','TCB','NE','FGP'};%,'IMO','CAJ','CAG','GMCR','HSH','HAIN','SIM'};
c=yahoo;
for i=1:4
Price.(ticker{i})=fetch(c,ticker(i),'Adj Close','Jan 1 00','Apr 19 13','d');
temp=Price.(ticker{i});
ClosePrice(:,i)=temp(:,2);
end
y=ClosePrice;
end
当数组中有三个证券时,它会工作,但当数组中有三个以上证券时,它会抛出错误。错误消息如下所示:
Subscripted assignment dimension mismatch.
Error in fetchDataFromYahoo (line 7)
ClosePrice(:,i)=temp(:,2);
您能帮我解决这个问题吗?您假设所有系列的长度都相同。只需将其保存在一个结构中:
fetchDataFromYahoo({'ABFS','TCB','NE','FGP'})
我将您的函数修改为:
function Price = fetchDataFromYahoo(ticker)
c = yahoo;
for i = 1:numel(ticker)
Price.(ticker{i}) = fetch(c,ticker(i),'Adj Close','Jan 1 00','Apr 19 13','d');
end
end
调用的结果(第一行代码):
编辑以处理评论
为了适应矩阵中不同长度的金融时间序列,您需要在缺少特定天数数据的地方填写NAN。您将需要和我的:
您可以在
Out
中看到ABFS、TCB和NE缺少第37行对应的日期(您也可以在D中再次检查此项,缺少日期730539)。感谢您的回答!然而,我想得到一个包含所有价格的矩阵(不是结构),因为我想应用matlab的price2ret函数。这是一个完全不同的问题,因为你们需要将填充FGP空白点的日期和NAN对齐。你们能详细说明你们的建议吗?什么意思:FGP?谢谢你,奥列格!Спасибо большое, Вы мне очень сильно помогли =)
ans =
ABFS: [3337x2 double]
TCB: [3337x2 double]
NE: [3337x2 double]
FGP: [3343x2 double]
% Use the modified function that returns a structure
D = fetchDataFromYahoo({'ABFS','TCB','NE','FGP'});
% Convert to cell
C = struct2cell(D);
% Count how many rows each cell
len = cellfun('size',C,1);
% Expand id to match each series length
Out = Pivot([rude(len,1:numel(C))', cat(1,C{:})]);