购买&在当地最小值和最大值之后出售

时间:2013-08-10 09:31:20

标签: r plot zigzag

我有一个日期形式的数据系列。高开低价(收盘价)。我想为数据的关闭列创建局部最大值和最小值。我想进一步购买当地最小值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等时购买。

问候 阿希什

2 个答案:

答案 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)