我有一个日期形式的数据系列。高开低价(收盘价)。我想为数据的关闭列创建局部最大值和最小值。我想进一步购买当地最小值2天后关闭并在两天的当地最大值@关闭后卖出。我还想进一步计算盈利和亏损。相同的代码如下。
require(quantmod)
tckr1<-"^NSEI"
start<-Sys.Date()-200
end<- format(Sys.Date(),"%Y-%m-%d") # yyyy-mm-dd
getSymbols(tckr1, from=start, to=end)
data<- NSEI$NSEI.Close
data$n <- 1:nrow(data)
data$z <- ZigZag(data$NSEI.Close , change = 2 , percent = T)
data$level<- data[c(findPeaks(data$z) , findValleys(data$z)) - 1 , ]
data$NSEI.Close.1<- NULL
data$n.1<- NULL
data$trade<- lag(data$level,2)
现在我需要数据栏告诉我何时买入和卖出+1和-1,并计算相同的盈亏。在上面提到的数据中,我将在n = 29 @ 5719.70和当n = 36 @ 5851.20等时购买。
问候 阿希什
答案 0 :(得分:1)
require(quantmod)
tckr1<-"^NSEI"
start<-Sys.Date()-200
end<- format(Sys.Date(),"%Y-%m-%d") # yyyy-mm-dd
getSymbols(tckr1, from=start, to=end)
data<- NSEI$NSEI.Close
data$n <- 1:nrow(data)
data$z <- ZigZag(data$NSEI.Close , change = 2 , percent = T)
data$level<- data[c(findPeaks(data$z) , findValleys(data$z)) - 1 , ]
ex <- data[c(findPeaks(data$z) , findValleys(data$z)) - 1 , ]
data$trade<- data$level
data$trade[is.na(data$level)]<- 0
data$trade[data$trade!=0,]<- c(1,-1)
这样您就可以获得交易栏+/- 1.
答案 1 :(得分:1)
为了回答问题的最终“P / L”曲线部分,下面的代码将根据ANUP的代码生成一个权益曲线,
require(PerformanceAnalytics)
ex <- data[c(findPeaks(data$z) , findValleys(data$z)) - 1 , ]
returns <- ROC(ex$NSEI.Close)*(Lag(ex$trade))
equity <- exp(cumsum(na.trim(returns)))
charts.PerformanceSummary(equity)