我正在尝试在quantstrat中编写自己的信号函数。我正在努力的逻辑与其他R操作中使用的逻辑相同。
data [,colNums [1]]等返回值向量。
sigPair <- function( label, data = mktdata, columns )
{
ret_sig = FALSE
colNums <- match.names(columns, colnames(data))
ratio_minus_dn <- data[, colNums[1]] - data[, colNums[3]]
ret_sig <- do.call(">", list(data[, colNums[1]], data[, colNums[2]]))
ret_sig <- ifelse( min(tail(ratio_minus_dn, 400)) < 0, ret_sig, FALSE )
colnames(ret_sig) <- label
return(ret_sig)
}
这是这一行:
ret_sig <- ifelse( min(tail(ratio_minus_dn, 400)) < 0, ret_sig, FALSE )
这给了我一些问题。
我得到的错误是:
colnames<-
中的错误(*tmp*
,值=“cross.up”):
尝试在少于两维的对象上设置colnames
我的目的是检查在最后400个元素中ratio_minus_dn是否为&lt; 0,在这种情况下返回true。
完成这项任务的好方法是什么?
感谢所有提示!
答案 0 :(得分:2)
无法解决这个问题,但在解决方案上得到了很好的解决方案,使我能够解决这个问题。这使我能够使用更高的时间帧计算,所以我几乎得到了相同的结果:
getSymbols("SPY", src="yahoo")
SPY$wklyRSI <- xts:::by.period(SPY, RSI, period="weeks", n=2)