0

我正在尝试在 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*, value = "cross.up") 中的错误:尝试在小于二维的对象上设置 colnames

我的目的是检查 ratio_minus_dn 在最后 400 个元素中是否为 <0,并在这种情况下返回 true。

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

感谢所有提示!

4

1 回答 1

2

无法解决这个问题,但得到了一个很好的解决方案提示,使我能够解决这个问题。这使我能够使用更高的时间范围计算,因此我几乎可以得到相同的结果:

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

SPY$wklyRSI <- xts:::by.period(SPY, RSI, period="weeks", n=2)
于 2012-11-27T15:27:39.943 回答