2013-08-10 3 views
1

J'ai une série de données qui est de la date de forme. ouvrir haut bas et fermer (prix). Je veux créer des maxima et des minima locaux pour la colonne close des données. Je veux en outre acheter après 2 jours de minima local @ fermer et vendre après deux jours de maxima local @ fermer. Je veux en outre calculer le profit et la perte pour le même. le code pour le même est comme sous.Acheter et vendre après les minima locaux et les maxima

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) 

Maintenant, je besoin de la colonne de données pour me dire quand acheter et vendre par +1 et -1 et aussi pour calculer les profits et pertes pour la même. Dans ces données mentionnées ci-dessus, je vais acheter quand n = 29 @ 5719,70 et lorsque n = 36 @ 5851,20 etc.

concernant Ashish

+0

Cette question ne concerne pas une ppear être reproductible. (Voir [ce post] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example).) Quelles bibliothèques utilisez-vous? Veuillez également nous montrer le code que vous avez écrit pour créer les colonnes que vous mentionnez. Peu importe si le code ne fonctionne pas, mais cela aide à voir ce que vous avez fait. – SlowLearner

+0

J'ai fait les changements requis. Je suis incapable de remplacer les nombres de data $ trade par +1 et -1. –

+1

a également essayé des données $ trade <- data [c (remplacer (données $ trade, findPeaks (données $ trade), 1), remplacer (données $ trade, (data $ trade)! = 0), 0), remplacer (données $ trade, findValleys (data $ trade), 1), 0) -1,] obtenant quelques erreurs. –

Répondre

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) 

De cette façon, vous pouvez obtenir votre colonne de commerce +/- 1.

+0

ouais son woking .... j'ai encore besoin de quelque chose de plus hors de lui. mais pour l'instant c'est génial. merci –

1

Juste pour apporter une réponse à la dernière partie de la courbe « P/l » de la question, le code ci-dessous va générer une courbe d'équité basée sur le code de 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) 
Questions connexes