使用 Matlab 从 Yahoo 获取多个证券

Fetch multiple securities from Yahoo using Matlab

我正在尝试使用 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给出错误信息"Argument to dynamic structure reference must evaluate to a valid field name."

有没有人知道如何解决这个问题?提前致谢

您正在该行的结构中使用动态引用:

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

在每个循环中,括号中的部分应计算为字符串,以便您在第一次迭代中有效地获得 Price.AAPL,在第二次迭代中获得 Price.MSFT,在第三次迭代中获得 Price.XOM , 等等。但是,ticker 是一个元胞数组,因此您必须小心使用 () 与 {}。使用 () 为您提供元胞数组的子集,实际上是另一个元胞数组。另一方面,使用 {} returns 可以得到元胞数组的实际 content。要修复您的代码,请将 (ticker(i)) 的任何实例替换为 (ticker{i})