R QuantMod:如何获取表格格式的数据?
我为100家公司创建了一个for循环,并绘制了布林带、成交量、商品通道指数、MACD和相对强度指数。对于我提到的所有指标,如何将该表转换为表 对于循环脚本:R QuantMod:如何获取表格格式的数据?,r,dataframe,xts,quantmod,R,Dataframe,Xts,Quantmod,我为100家公司创建了一个for循环,并绘制了布林带、成交量、商品通道指数、MACD和相对强度指数。对于我提到的所有指标,如何将该表转换为表 对于循环脚本: for (stock in ls(stockEnv)){ chartSeries(stockEnv[[stock]], theme="white", name=stock, TA="addVo();addBBands();addCCI();addSMA(20, col='blue'); add
for (stock in ls(stockEnv)){
chartSeries(stockEnv[[stock]], theme="white", name=stock,
TA="addVo();addBBands();addCCI();addSMA(20, col='blue');
addSMA(5, col='red');addMACD();addRSI();addROC()", subset='last 30 days')
}
情节附呈。我试图做的是将我拥有的其他99个股票代码的所有数据绑定到一个表格格式中,用于您在图中看到的指标 我发现您的代码来源于此 我认为这种方法应该适合你
library(quantmod)
library(data.table)
stockEnv <- new.env()
stocks <- c("AAPL","MSFT","FB")
getSymbols(stocks, src='yahoo', env=stockEnv)
您还可以轻松添加任何其他TTR
函数。您只需要知道它接受哪些列作为输入以及输出多少列
对于MACD:
Result[,(c("macd","signal")):=
apply(MACD(.SD,type="EMA"),2,function(x){as.list(x)}),
by = "Symbol",
.SDcols = c("Close")]
注:单列输出有轻微变化,如CCI
因此,对于商品渠道指数
Result[,(c("CCI")):= list(as.vector(CCI(.SD))),by = "Symbol", .SDcols = c("High","Low","Close")]
或相对强度指数
Result[,(c("RSI")):= list(as.vector(RSI(.SD, maType="EMA"))),by = "Symbol", .SDcols = c("Close")]
查看所有其他
TTR
函数的帮助,例如help(SMA)
。stockEnv因此这是有效的,但仅适用于for loopah中最后一个完成此操作的股票代码,非常感谢您。现在我看到我们有8列,但是我们有没有办法从图中看到的布林带中提取数据,或者我可以自己用R或SQL创建这些计算?不,这太神奇了。再次感谢你。我无法表达我的感激之情。我能把你用BBAND做的同样逻辑应用到其他指标上吗,如CCI、RSI、MACD等?抱歉,我很抱歉被窃听了,但是我在努力对付RSI,因为据我所知,RSI公式使用的是移动平均数。好吧,我真的认为这次我们做到了。如果不起作用,请告诉我。
Result[,(c("CCI")):= list(as.vector(CCI(.SD))),by = "Symbol", .SDcols = c("High","Low","Close")]
Result[,(c("RSI")):= list(as.vector(RSI(.SD, maType="EMA"))),by = "Symbol", .SDcols = c("Close")]