更改quantmod代码中的符号

时间:2016-03-24 15:31:34

标签: r quantmod

我有以下代码使用来自Yahoo的数据使用R包quantmod创建一个股票图表。在我的例子中,代码中检索到的符号是“KR”。

如何更改代码,以便我可以检索其他股票代码,而无需用新的股票代码替换“KR”的每一个事件?

library(quantmod) 
library(TTR)


getSymbols("KR",  src="yahoo")
KR <- adjustOHLC(KR, use.Adjusted=TRUE)

KR.EMA.9<- EMA(KR$KR.Close, n=5) 
KR.EMA.34<- EMA(KR$KR.Close, n=50) 
KR.EMA.200 <- EMA(KR$KR.Close, n=200)


candleChart(KR, theme="white", 
            subset='2015-09::2015-10')
            addTA(KR.EMA.9, on=1, col = "red")
            addTA(KR.EMA.34, on=1, col = "blue")
            addTA(KR.EMA.9 - KR.EMA.34,col='blue', type='h',legend="9-34 MA")

1 个答案:

答案 0 :(得分:1)

这可以通过选项auto.assign=FALSE来实现。这是一个例子。

library(quantmod)
my_tickers  <- c("KR","AAPL", "MSFT") #store the tickers in a vector
my_xts <- getSymbols(my_tickers[1],  src="yahoo", auto.assign=FALSE)
tail(my_xts)
#           KR.Open KR.High KR.Low KR.Close KR.Volume KR.Adjusted
#2016-03-16   37.87   38.69  37.82    38.61   6208100       38.61
#2016-03-17   38.45   38.56  37.98    38.09   9445400       38.09
#2016-03-18   38.14   38.88  38.00    38.56   9809000       38.56
#2016-03-21   38.38   38.60  38.09    38.13   5911400       38.13
#2016-03-22   38.18   38.32  37.69    37.95   7988000       37.95
#2016-03-23   37.92   38.02  37.35    37.59   9089000       37.59

通过更改my_tickers[]的索引,可以使用相同的代码选择另一个代码:

my_xts <- getSymbols(my_tickers[2],  src="yahoo", auto.assign=FALSE)
tail(my_xts)
#           AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
#2016-03-16    104.61    106.31   104.59     105.97    37893800        105.97
#2016-03-17    105.52    106.47   104.96     105.80    34244600        105.80
#2016-03-18    106.34    106.50   105.19     105.92    43402300        105.92
#2016-03-21    105.93    107.65   105.14     105.91    35180800        105.91
#2016-03-22    105.25    107.29   105.21     106.72    32232600        106.72
#2016-03-23    106.48    107.07   105.90     106.13    25452600        106.13

因此,代码可以运行,例如,使用类型为

的循环
for (i in 1:length(my_tickers)) {
  my_xts <- getSymbols(my_tickers[i],  src="yahoo", auto.assign=FALSE)
  # perform analysis of the time series my_xts here
}

可以使用Cl()选择收盘价(有相应的功能可以选择其他列,有关详情,请参阅?OHLC.Transformations)。

因此可以根据这样的密切数据计算EMA和其他指标:

EMA.9 <- EMA(Cl(my_xts), 9)
tail(EMA.9)
#                EMA
#2016-03-16 102.6959
#2016-03-17 103.3167
#2016-03-18 103.8374
#2016-03-21 104.2519
#2016-03-22 104.7455
#2016-03-23 105.0224