1

日付形式のデータ系列があります。始値高値と終値 (価格)。データのクローズ列の極大値と極小値を作成したいと考えています。さらに、極小値 @ 終値の 2 日間後に買い、極値 @ 終値の 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 の場合などに購入します。

よろしくアシッシュ

4

2 に答える 2

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 に答える
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 に答える