我是R的新手,我尝试在xts zoo类上使用apply函数,但是它显示错误。我有一个公式:((2 * Close-High-Low)/(High-Low))* Volume
float f = (float)333.50;
然后我尝试了另一个:
Input:
y <- getSymbols("0005.HK", auto.assign = FALSE, src = "yahoo")
Error:
y$II <- apply(y,2,function(x) (2Cl(x) - Hi(x) - Lo(x)) / ((Hi(x) - Lo(x)) * Vo(stk)))
Error: unexpected symbol in "apply(y,2,function(x) (2Cl"
在那之后,我想总结y $ II 21天,但我不知道怎么做申请功能每21天之间总计21天
IIstd = 21的总和((2 * C-H-L)/(H-L))* V
IInorm =(IIstd / Sum 21天V)* 100
任何人都可以帮助我吗?请指教,谢谢。
答案 0 :(得分:1)
这里有两个问题:
2Cl(x)
我无效R - 使用2 * Cl(x)
apply
为了清楚起见,我们假设II =(2C - H - L)/((H-L)* V)并且您想要21倍周期体积加权移动平均值的100倍。如果那不是你想要的那样修改。
试试这个:
y$II <- (2*Cl(y) - Hi(y) - Lo(y)) / ((Hi(y) - Lo(y)) * Vo(y))
关于问题的第二部分,试试这个 - rollapplyr
在动物园包中。
wmean <- function(x) weighted.mean(x$II, Vo(x))
y$MeanII <- 100 * rollapplyr(y, 21, wmean, by.column = FALSE, fill = NA)
同时查看TTR套餐。
更新:在问题的第二部分添加了答案。