2011-03-30 45 views
1

我似乎無法使用來自XTS的period.apply()的TTR指標函數direclty。請幫我弄清楚我做錯了什麼。如何使用TTS指標函數使用XTS period.apply()?

> 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)第一次,但它沒有幫助。

+0

在你的例子的錯誤是因爲'RSI'的默認'N = 10',也沒有周10天。您還將一個OHLC對象發送給RSI,該RSI需要一個單變量對象。即使你解決了這些問題,'?period.apply'表示它將函數應用於一個矢量上的非重疊區間,並返回一個長度爲INDEX-1的矢量;你試圖返回一個和'sample_matrix'一樣長度的向量。如果您告訴我們您要完成的是什麼,那麼與其僅僅發佈無法使用的代碼相比,這會很有幫助。 – 2011-03-30 18:11:36

+0

@ joshu-ulrich感謝您指出我的錯誤。我試圖在period.apply中使用[代碼]端點(sample_matrix,'weeks',k = 2)[/ code],這樣我可以在2周的時間段內獲得RSI值。 to.period()方法不支持非統一句點(例如2,3周而不是1),所以我認爲這可能會發生。 – 2011-03-30 19:08:00

+0

保羅,'to.period'絕對支持非統一時期。這就是'k'參數的用途(例如'to.period(sample_matrix,「weeks」,2)')。 – 2011-03-30 19:24:03

回答

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 
+0

謝謝!對不起,我不能相信我錯過了to.period()中的'k'選項! – 2011-03-30 19:33:00