2015-06-06 67 views
0

簡單循環問題。試圖找到一個循環(不是首選)或其他任何東西來提出一個信號stoch。如果DIFF < 1> -1,1,否則爲0。MACD信號發生器R

library(quantmod) 

getSymbols("SPY", src="yahoo", from="2013-01-01", to="2015-05-01") 

y <- na.omit(merge(SPY, SMI(Cl(SPY)))) 

y$diff <- y$SMI - y$signal 

# if Diff <1, >-1, then 1, else 0. 
+1

你只是在尋找'ifelse(abs(y $ diff)> 1,1,0)'? – MrFlick

+0

是的,但是我得到了「abs(y $ diff)中的錯誤:數學函數的非數字參數」。此外,我試圖創建ifelse條件,當它低於1和以上-1 – SJSU2013

回答

1

如果您就到@MrFlick您的評論的問題是,要爲低於-1值的差異(Y $ DIFF)映射到 - 1,值高於1比1,其餘數值爲0,這條線將做到這一點:

y$diff.map <- ifelse(y$diff>1,1,ifelse(y$diff< -1,-1,0)) 

在回答您的更新註釋下面的一行將映射到1和值超出這個-1和+1之間的值範圍爲零。

y$diff.map <- ifelse(y$diff >= -1 & y$diff <= 1,1,0) 
+0

這基本上是我想要的。不過,我只需要diff.map信號等於1時diff值在-1和1之間。 – SJSU2013

+0

@ SJSU2013請參閱我的編輯。 – hvollmeier