我真的很想找到解决方案。 如果你查看最后一行代码,你就会明白我想在下次开启时买入并在5天后卖出(x = 5)。
问题是xts
索引正在计算周末。所以例如你在7月12日星期五得到指数= 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)
答案 0 :(得分:2)
使用lag
计算+x
天的结算时间。您可能需要将k
的值更改为-(x+1)
,具体取决于您的实际所需逻辑(在信号发出后5天或在该职位开启后5天内出售)。
SPY$Lag.Cl <- lag(Cl(SPY),-x)
PnL <- lag(SPY$buySig) * (SPY$Lag.Cl - Op(SPY))