2015-06-06 26 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