使用Matlab从Yahoo获取多个证券

时间:2015-11-16 03:18:04

标签: matlab loops fetch

我试图使用Matlab从雅虎获取多个证券。由于Yahoo不支持多次获取,因此将循环用作以下代码:

ticker = { 'AAPL' 'MSFT' 'XOM' 'GE' 'JNJ'  'BRK.B' 'WFC' 'AMZN' 'JPM' 'FB' };
c=yahoo;

for i=1:10
Price.(ticker(i)) = fetch(c,ticker(i), 'Adj Close', 'Jan 1 05', 'Dec 31 07', 'm');
temp = Price.(ticker(i));
ClosePrice(:, i) =temp(:,2);
end 

close(c);

但是Matlab给出了错误消息"动态结构引用的参数必须评估为有效的字段名称。"

有没有人有任何洞察力来解决这个问题?提前致谢

1 个答案:

答案 0 :(得分:2)

您在此行的结构中使用动态参考:

Price.(ticker(i)) = ...

在每个循环中,括号中的部分应评估为字符串,以便在第一次迭代时有效获得Price.AAPL,在第二次迭代时有效Price.MSFT,在第三次迭代时获得Price.XOM,并且等等。但是,ticker是一个单元格数组,因此您必须小心使用()vs {}。使用()为您提供单元格数组的子集,实际上是另一个单元格数组。另一方面,使用{}可返回单元格数组的实际内容。要修复代码,请将(ticker(i))的所有实例替换为(ticker{i})