我有以下代码使用来自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")
答案 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