Покупайте и продавайте после локальных минимумов и максимумов
У меня есть ряд данных, который имеет форму даты. открыть максимум минимум и закрыть (цены). Я хочу создать локальные максимумы и минимумы для закрытого столбца данных. Я также хочу купить через 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 ответа
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.
Просто чтобы дать ответ на заключительную часть вопроса "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)