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 , ]
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 等时购买。

问候阿什什

4

2 回答 2

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)
于 2013-09-28T16:24:06.563 回答
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。

于 2013-08-13T07:01:53.903 回答