【问题标题】:How to use XTS period.apply() using TTR indicator functions?如何通过 TTR 指标函数使用 XTS period.apply()?
【发布时间】:2011-03-30 17:11:41
【问题描述】:

我似乎无法通过 XTS 中的 period.apply() 直接使用 TTR 指标函数。请帮我弄清楚我做错了什么。

> require(TTR)
> require(quantmod)
> require(xts)
> data(sample_matrix)

> period.apply(sample_matrix, endpoints(sample_matrix,"weeks"), RSI)

Error in EMA(c(NA, 0.190714286249097, 0.190459011271606, 0, 0, 0, NA,  : 
  Invalid 'n'

我也尝试过先as.xts(sample_matrix),但没有帮助。

【问题讨论】:

  • 您的示例中的错误是因为RSI 的默认n=10 并且没有10 天的周数。您还将一个 OHLC 对象发送到 RSI,它需要一个单变量对象。即使你解决了这些问题,?period.apply 表示它会将函数应用于沿向量的非重叠区间,并返回一个长度为 INDEX-1 的向量;您正在尝试返回与sample_matrix 长度相同的向量。如果您告诉我们您要完成的工作,而不是仅仅发布不起作用的代码,这将很有帮助。
  • @joshu-ulrich 感谢您指出我的错误。我正在尝试在 period.apply 中使用 [code]endpoints(sample_matrix, 'weeks', k = 2)[/code] ,以便我可以获得 2 周期间系列的 RSI 值。 to.period() 方法不支持非统一周期(例如 2、3 周而不是 1),所以我认为这可能会。
  • Paul, to.period 肯定支持非统一期。这就是 k 参数的用途(例如 to.period(sample_matrix, "weeks", 2))。

标签: r xts quantitative-finance


【解决方案1】:

根据你的问题,我认为你想要这样的东西:

> RSI(Cl(to.period(sample_matrix, "weeks", 2)),4)
               [,1]
2007-01-07       NA
2007-01-21       NA
2007-02-04       NA
2007-02-18       NA
2007-03-04 58.42659
2007-03-18 40.25955
2007-04-01 27.12793
2007-04-15 50.26745
2007-04-29 38.97652
2007-05-13 22.03943
2007-05-27 28.75952
2007-06-10 22.21261
2007-06-24 21.58207
2007-06-30 41.69338

【讨论】:

  • 谢谢!抱歉,我不敢相信我错过了 to.period() 中的“k”选项!
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2019-06-26
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多