我失去了想法(使用我有限的R知識)如何解決以高性能(矢量化)方式跟隨「問題」。基於另一個xts對象中的某個其他列,調用具有不同k的ifelse中的延遲
我想確定SPX連續收盤3天或更多天的日子,同時並非來自50日低點。我編程這個固定的回顧三天,但不知道如何使它動態。下面是代碼:
require(quantmod)
getSymbols(c("^GSPC"), adjust=TRUE, from="1990-01-01")
assign("SPX", GSPC, envir=.GlobalEnv)
names(SPX) <- c("SPX.Open", "SPX.High", "SPX.Low", "SPX.Close", "SPX.Volume", "SPX.Adjusted")
SPX.ClCl.positive <- ifelse(ClCl(SPX) > 0, 1, 0)
SPX.ClCl.positive[is.na(SPX.ClCl.positive)] <- 0
numDaysPositive <- cumsum(SPX.ClCl.positive) - cummax(cumsum(SPX.ClCl.positive)* (!SPX.ClCl.positive))
numDaysPositiveGreaterThan3 <- ifelse(numDaysPositive >= 3, 1, 0)
SPX.Lo.gt.50day.low <- ifelse(lag.xts(Lo(SPX), k=3) <= runMin(Lo(SPX), n=50), 1, 0)
我希望能夠做的是這樣的:
SPX.Lo.gt.50day.low <- ifelse(lag.xts(Lo(SPX), k=numDaysPositive) <= runMin(Lo(SPX), n=50), 1, 0)
編輯開始
我想看看,如果我們達上SPX連續三天以上(3,4,5,...)(保持在變量numDaysPositive),無論這種上漲是從50日低點。我想回顧3,4,5,...天,看看在特定日期(3,4,5,...)前一天SPX是否創下50天的低點。 「邏輯」或假設是,對於連續三天或更多天連續上漲的50天低點的集會並不少見,但如果我們連續上漲3,4,5,...天,並沒有從50天的低點開始,那麼這可能是值得考慮的,因爲市場可能停止甚至下跌一段時間。
現在我在最後一個ifelse中使用k = 3的lag.xts,但想使用k = numDaysPositive(dynamic)。
編輯結束
所以,我想在滯後K是基於在numDaysPositive值動態。我相信,如果只有一個人可以看到如何......這一切都很簡單,我現在只是看着這一整天,並沒有想到任何事情。
從你的代碼中,你不知道你想要做什麼。 'SPX.Lo.gt.50day.low'總是'1',除非'k = n'。 –
我編輯了這個問題。我希望我能更好地解釋我想達到的目標。根據之前計算的天數,在lag.xt中有一個動態k值。 – user947967