2015-08-14 85 views
2

我想創建一個信號狀態時,我的價差計算比上/下布林帶大於或小於差異(),但是我算了一筆賬:R/quantmod - BBands之間runsd(EMA)的計算

pair <- c("qqq","iwm") 
start <- "2014-08-08" 
finish <- "2015-08-13" 
stckY <- suppressWarnings(getSymbols(pair[1], from = start, to = finish, auto.assign = FALSE)) 
stckX <- suppressWarnings(getSymbols(pair[2], from = start, to = finish, auto.assign = FALSE)) 

adY <- Ad(stckY) 
adX <- Ad(stckX) 

logY <- log(adY) 
logX <- log(adX) 

spread <- cbind(logY, logX) 
spread <- spread[complete.cases(spread),] #remove NAs 
spread$dailyDiff <- spread[,1] - spread[,2] 

ema <- EMA(spread[,1] - spread[,2], n=20) 
spread$UpBand <- (runSD(ema, n=20) * 2) + ema 
spread$LwBand <- ema - (runSD(ema, n=20) * 2) 

chartSeries(spread$dailyDiff, up.col = "white", 
      theme = chartTheme("black"), line.type = "l") 
addEMA(n = 20, col = "orange") 
addBBands(n = 20, sd = 2, maType = "EMA") 

與chartSeries顯示屏上顯示的band值不匹配,我無法弄清楚爲什麼?幫助文件指出,不使用SMA可能會導致「不一致」,所以這可能是問題的根源? chartSeries也使用EMA。

也許有更好的方法去做這件事?我不知道如何使用BBands(單獨)來引用上/下帶...

+1

這不是我清楚你比較什麼,他們是如何不同。 [可重現的例子](http://stackoverflow.com/q/5963269/271616)比含糊的描述要好得多。 –

+0

您評論中的代碼非常難以閱讀。請將其編輯到您的問題中(使用正確的代碼格式),然後刪除您的評論。 –

+0

@JoshuaUlrich - 對不起 - 仍在學習本網站 - 我已更新原帖 – trock2000

回答

1

有2個問題:

  1. 你把移動平均的標準偏差時,你應該採取原始系列的標準偏差。
  2. BBands函數在runSD調用中使用sample = FALSE

此複製BBands函數的輸出在圖表中:

ema <- EMA(spread$dailyDiff, n=20) 
spread$UpBand <- runSD(spread$dailyDiff, n=20, sample=FALSE) * 2 + ema 
spread$LwBand <- ema - runSD(spread$dailyDiff, n=20, sample=FALSE) * 2 
tail(spread) 
#   QQQ.Adjusted IWM.Adjusted dailyDiff  UpBand  LwBand 
# 2015-08-06  4.704563  4.793060 -0.08849663 -0.06442705 -0.1381200 
# 2015-08-07  4.703295  4.786575 -0.08328008 -0.06687188 -0.1322478 
# 2015-08-10  4.714652  4.798267 -0.08361464 -0.06938022 -0.1267023 
# 2015-08-11  4.701752  4.789323 -0.08757113 -0.07421110 -0.1198771 
# 2015-08-12  4.705196  4.787408 -0.08221192 -0.07856667 -0.1126964 
# 2015-08-13  4.703566  4.784320 -0.08075361 -0.08283161 -0.1055975 
tail(BBands(spread$dailyDiff, n=20, maType="EMA")) 
#     dn  mavg   up  pctB 
# 2015-08-06 -0.1381200 -0.10127351 -0.06442705 0.6733800 
# 2015-08-07 -0.1322478 -0.09955985 -0.06687188 0.7490178 
# 2015-08-10 -0.1267023 -0.09804126 -0.06938022 0.7516764 
# 2015-08-11 -0.1198771 -0.09704411 -0.07421110 0.7074403 
# 2015-08-12 -0.1126964 -0.09563152 -0.07856667 0.8931942 
# 2015-08-13 -0.1055975 -0.09421457 -0.08283161 1.0912769 
+0

賓果,謝謝 - 你一直很有幫助,非常感謝 – trock2000