2013-07-15 71 views
3

我真的很想在這裏找到解決方案。 如果你看最後一行代碼,你會明白我想在下次打開時買入,5天后賣出(x = 5)。XTS指數和交易日問題

事情是xts指數是週末計數。舉例來說,您可以在12月7日星期五得到index = 1 ...但是在7月15日星期一,指數= 4。我希望它等於2這是+1交易日。

我可以修改索引或使用Cl(SPY)[index(SPY) + x]以外的其他方法獲得x + 5個交易日嗎?

先感謝您的任何提示這個

# Variable d'optimisation 
x <- 5 

library(quantmod) 

# Get data from Yahoo, then adjust 
getSymbols("SPY", from = "1990-01-01") 

# add RSI3 column 
SPY$RSI3 <- RSI(Cl(SPY), n = 3) 

# Add buy sig 
SPY$buySig <- ifelse(SPY$RSI3 > 90, 1, 0) 

# If signal, buy tomorrow at open, sell at close x days later 
# PnL Calculation here : 
PnL <- ifelse(lag(SPY$buySig) == 1, Cl(SPY)[index(SPY) + x] - Op(SPY), NA) 

回答

2

使用lag+x天計算關閉。您可能需要將k的值更改爲-(x+1),具體取決於您的實際期望邏輯(賣出信號後5天或開倉後5天)。

SPY$Lag.Cl <- lag(Cl(SPY),-x) 
PnL <- lag(SPY$buySig) * (SPY$Lag.Cl - Op(SPY)) 
+0

非常感謝!這工作完美,使更多的意義:) – JohnWolf