2013-08-10 3 views
1

У меня есть серия данных, которая имеет форму даты. открытые высокие низкие и закрытые (цены). Я хочу создать локальные максимумы и минимумы для закрытого столбца данных. Я также хочу купить после 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, а также для расчета прибыли и убытков за то же самое. В упомянутых выше данных я буду покупать, когда п = 29 @ 5719.70 и при п = 36 @ 5851,20 и т.д.

С уважением Ashish

+0

Этот вопрос действительно не ppear быть воспроизводимым. (См. [Этот пост] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example).) Какие библиотеки вы используете? Также, пожалуйста, покажите нам код, который вы написали, чтобы создать колонки, которые вы упомянули. Не имеет значения, работает ли код, но он помогает понять, что вы сделали. – SlowLearner

+0

Я внес необходимые изменения. Я не могу заменить числа из данных $ trade на +1 и -1. –

+1

также попытались данные $ trade <- data [c (replace (data $ trade, findPeaks (data $ trade), 1), replace (data $ trade, (data $ trade)! = 0), 0), заменить (данные $ trade, findValleys (data $ trade), 1), 0) -1,] получение некоторых ошибок. –

ответ

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.

+0

Да, его укусы .... Мне нужно еще кое-что из этого. но на данный момент это замечательно. Thanx –

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) 
Смежные вопросы