stockDataFrame <- stockSymbols()
symbs <- stockDataFrame[["Symbol"]]
所以我在变量“symbs”中得到了所有符号。如何在此向量的每个元素上应用TTR函数“getYahooData”,特别是因为该函数不仅需要股票代码,还需要start,end,freq,type,adjust和quiet参数值?
答案 0 :(得分:3)
只需使用quantmod即可为您加载TTR。而且你不会伤害@JoshuaUlrich的感情,因为他也对quantmod项目有所了解。查看网站上的示例:http://www.quantmod.com/
getSymbols
是一种“通用”函数,它具有针对不同数据源的“方法”。默认情况下,src=yahoo
表示调用getSymbols.yahoo
。这可以处理符号的矢量。
默认情况下auto.assign=TRUE
表示返回的数据在.GlobalEnv
中分配(默认情况下),并且返回分配的对象的名称。< / p>
> library(quantmod)
> getSymbols(symbs[1:5])
[1] "AA-P" "AAU" "ACU" "ACY" "ADGE"
> head(ACY)
ACY.Open ACY.High ACY.Low ACY.Close ACY.Volume ACY.Adjusted
2007-01-03 6.58 7.15 6.58 6.99 31700 6.99
2007-01-04 7.24 7.35 7.15 7.35 18600 7.35
2007-01-05 7.39 7.55 7.25 7.45 15200 7.45
2007-01-08 7.32 7.35 7.01 7.26 16100 7.26
2007-01-09 7.15 7.50 7.15 7.16 12100 7.16
2007-01-10 7.30 7.45 7.21 7.24 13700 7.24
如果你真的不想下载6,000多只股票的数据,那么有一个方便的替代方案:attachSymbols
通过延迟评估使所有这些符号按需提供。第一次使用Symbol时,它将被下载并缓存,以便下次使用它时,它将从内存中读取(或根据您使用attachSymbols
时使用的参数来读取磁盘。)
> attachSymbols()
> tail(GS)
GS.Open GS.High GS.Low GS.Close GS.Volume GS.Adjusted
2012-11-26 119.16 120.95 118.50 120.94 3371000 120.43
2012-11-27 120.50 121.34 118.38 118.41 3875200 117.91
2012-11-28 117.25 119.33 116.57 119.33 3811200 119.33
2012-11-29 120.00 120.45 118.52 118.73 2980800 118.73
2012-11-30 117.96 119.44 117.69 117.79 4264300 117.79
2012-12-03 118.42 119.64 118.07 118.40 3613900 118.40
答案 1 :(得分:1)
您可以使用plyr包循环遍历符号列表。
我不确定getYahooData是否可以为所有符号加载数据。我认为使用TTR应该存在更好的方法。但在这里我展示了 plyr 包的使用。这是一种通用的方法。
我打电话给llply获取两个日期之间前6个市场符号的所有数据(你可以添加其他函数参数,..)
library(plyr)
ll <- llply(symbs[1:6],getYahooData ,start=20081201, end=20081207)
$`AA-P`
Open High Low Close Volume Unadj.Close Div Split Adj.Div
2008-12-01 49.39233 49.39233 49.39233 49.39233 243.9650 60.25 NA NA NA
2008-12-02 49.39233 49.39233 49.39233 49.39233 243.9650 60.25 NA NA NA
2008-12-03 49.39233 49.39233 49.39233 49.39233 0.0000 60.25 NA NA NA
2008-12-04 49.80223 51.64676 49.80223 51.64676 487.9300 63.00 NA NA NA
2008-12-05 49.79403 49.79403 49.79403 49.79403 121.9825 60.74 NA NA NA
$AAU
Open High Low Close Volume
2008-12-01 0.49 0.53 0.49 0.50 57100
2008-12-02 0.52 0.54 0.51 0.52 33400
2008-12-03 0.50 0.54 0.49 0.49 52800
2008-12-04 0.49 0.49 0.44 0.44 62400
2008-12-05 0.44 0.48 0.42 0.47 87600
$ACU
Open High Low Close Volume Unadj.Close Div Split Adj.Div
2008-12-01 6.168596 6.168596 5.823880 5.823880 3196.838 6.42 NA NA NA
2008-12-02 5.987166 6.077881 5.814809 5.987166 8157.448 6.60 NA NA NA
2008-12-03 6.068810 6.068810 5.896452 5.987166 1984.244 6.60 NA NA NA