使用quantstrat在R中使用min和tail比较先前的值

时间:2012-09-25 19:01:31

标签: quantstrat

我正在尝试在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。

完成这项任务的好方法是什么?

感谢所有提示!

1 个答案:

答案 0 :(得分:2)

无法解决这个问题,但在解决方案上得到了很好的解决方案,使我能够解决这个问题。这使我能够使用更高的时间帧计算,所以我几乎得到了相同的结果:

getSymbols("SPY", src="yahoo")

SPY$wklyRSI <- xts:::by.period(SPY, RSI, period="weeks", n=2)