2016-07-15 69 views
-1

運行最小值和最大值我可以全天股價的載體:查找R中

> head(bidStock) 
     [,1] 
[1,] 1179.754 
[2,] 1178.000 
[3,] 1178.438 
[4,] 1178.367 
[5,] 1178.830 
[6,] 1178.830 

我想找到兩件事情。當我算法經歷一天。我希望它能夠找到當前點距離整個一天的歷史最小值和格言的距離。

「股票」包中有一個稱爲'mdd'的函數,該函數可以查找全天的最大抽取值(即對應於距離當日歷史最大值最遠的點的最低值)。但是,我不想只是最低的價值,我想要一個向量。我已經拿出下面的代碼來做到這一點。但是,我需要一種方法來處理點的運行歷史最小值。最後,典型的價格通過(max(day)+ min(day)+ closing price)/ 3來計算。有沒有一種方法可以像使用運行平均值一樣使用全天運行的歷史最小值和最大值來進行工作。

感謝您的幫助提前

+0

你可以發佈你的預期產出的例子嗎? – thepule

回答

2

你只需要cummmincummax累積最小值和最大值,從中你可以計算出如何遙遠,最小和最大的你,不管排列你喜歡:

# in base R, as data.frame 
df <- data.frame(price = bidStock, 
       min = cummin(bidStock), 
       max = cummax(bidStock)) 
df$off_min <- df$price - df$min 
df$off_max <- df$price - df$max 
df$typical_price <- (df$price + df$min + df$max)/3 # using price for closing price 

df 
##  price  min  max off_min off_max typical_price 
## 1 1179.754 1179.754 1179.754 0.000 0.000  1179.754 
## 2 1178.000 1178.000 1179.754 0.000 -1.754  1178.585 
## 3 1178.438 1178.000 1179.754 0.438 -1.316  1178.731 
## 4 1178.367 1178.000 1179.754 0.367 -1.387  1178.707 
## 5 1178.830 1178.000 1179.754 0.830 -0.924  1178.861 
## 6 1178.830 1178.000 1179.754 0.830 -0.924  1178.861 

# or in dplyr 
library(dplyr) 

data.frame(price = bidStock) %>% 
    mutate(min = cummin(bidStock), 
      max = cummax(bidStock), 
      off_min = price - min, 
      off_max = price - max, 
      typical_price = (price + min + max)/3) 
##  price  min  max off_min off_max typical_price 
## 1 1179.754 1179.754 1179.754 0.000 0.000  1179.754 
## 2 1178.000 1178.000 1179.754 0.000 -1.754  1178.585 
## 3 1178.438 1178.000 1179.754 0.438 -1.316  1178.731 
## 4 1178.367 1178.000 1179.754 0.367 -1.387  1178.707 
## 5 1178.830 1178.000 1179.754 0.830 -0.924  1178.861 
## 6 1178.830 1178.000 1179.754 0.830 -0.924  1178.861 
+0

有沒有辦法找到運行標準偏差 –

+0

嗯,我不知道這個累計函數,你不能用'Reduce'來做一個,因爲它不是一個二元函數,但是你可以計算它迭代地:'df $ sd < - sapply(seq_along(df $ price),function(x){sd(df $ price [seq(x)]))''' – alistaire