1

我正在使用 TTR 包来生成股票指标。但是,指标函数将 NA(如适用——例如 CMO、SMA、CMF 等)添加到序列的开头而不是结尾。有没有办法将输出向左对齐,以便将 NA 值添加到系列的末尾而不是开头?

例如:

library(TTR)    
x = 1:10
# TTR's simple moving average
SMA(x,n=2)
[1]  NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5

zoo 包有一个 align 选项,可以在最后用 NA 填充系列:

library(zoo)
rollmean(x,2,na.pad=TRUE,align='left')
[1] 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5  NA

有没有办法在 TTR 中指定类似的东西,因为我需要生成移动平均线以外的指标?我想我可以围绕这些函数创建一个包装器并手动移动结果值,但不确定是否有更好的方法来做到这一点。

此外,由于 TTR 被大量用于向股票价格添加指标,我想知道为什么填充在开头而不是结尾,尤其是因为大多数历史价格都是按降序(按日期)排序的?在上面的例子中,如果 x[1] 是今天股票的价格,x[10] 是 10 天前的价格,那么今天的移动平均线(跨度 = 2)不应该是今天+ 昨天的平均线吗?尽管我想在最后添加 NA,但我还想确保我没有误解这些指标的使用方式。

谢谢,-e

4

1 回答 1

1

我无法在函数调用中找到一个选项来将系列转移到不同的方向。但是,现在我明白了为什么 TTR 将系列向下移动。通过 quantmod 的 getSymbols() 获得的历史股票价格按日期升序返回它们。当我从雅虎手动下载报价时!或使用 ystockquote.py,顺序为降序。我只是按日期重新排序我的数据并按原样使用 TTR 库。

我想向上移动某些向量(用 NA 填充),我只是使用了以下代码:

miss_len = length(x[is.na(x])
x = x[!is.na(x)]
length(x) = length(x) + miss_len
于 2011-03-02T09:43:37.597 回答