R-Keltner通道

R-Keltner通道,r,quantmod,R,Quantmod,有没有已经实现Keltner通道的R包,我想知道的是每日收盘价定位在哪个通道(-3,-2,-1,1,2,3) 我在TTR中找到了ATR函数,但我不确定是否有办法使用它,我试图得到的是与链接描述的类似的东西,我只需要值,而不是图表,这样我就可以比较每日收盘价和通道 如果您能为我指明正确的方向,我们将不胜感激。这种模板代码将帮助您获得您特别想要的东西。选择自己的n值等 library(quantmod) getSymbols("AAPL") get_Keltner_channels <-

有没有已经实现Keltner通道的R包,我想知道的是每日收盘价定位在哪个通道(-3,-2,-1,1,2,3)

我在TTR中找到了ATR函数,但我不确定是否有办法使用它,我试图得到的是与链接描述的类似的东西,我只需要值,而不是图表,这样我就可以比较每日收盘价和通道


如果您能为我指明正确的方向,我们将不胜感激。

这种模板代码将帮助您获得您特别想要的东西。选择自己的n值等

library(quantmod)
getSymbols("AAPL")

get_Keltner_channels <- function(ohlc, n_EMA = 10, n_ATR = 14, multiplier = 2) {
    mid <- EMA(Cl(ohlc), n_EMA)    
    hi <- mid + multiplier * ATR(HLC = HLC(ohlc), n = n_ATR)$atr
    lo <- mid - multiplier * ATR(HLC = HLC(ohlc), n = n_ATR)$atr
    keltner <- cbind(lo, mid, hi)
    colnames(keltner) <- c("Kelt_lo", "Kelt_mid", "Kelt_hi")
    keltner
}

out <- get_Keltner_channels(AAPL)

# > tail(out)
# Kelt_lo Kelt_mid   Kelt_hi
# 2016-07-15 94.26621 97.09092  99.91563
# 2016-07-18 94.74742 97.58893 100.43045
# 2016-07-19 95.27084 98.00367 100.73651
# 2016-07-20 95.71888 98.35937 100.99986
# 2016-07-21 95.83500 98.55403 101.27306
# 2016-07-22 95.88848 98.57330 101.25811
库(quantmod)
getSymbols(“AAPL”)

get_Keltner_channels这种模板代码将帮助您获得您特别想要的内容。选择自己的n值等

library(quantmod)
getSymbols("AAPL")

get_Keltner_channels <- function(ohlc, n_EMA = 10, n_ATR = 14, multiplier = 2) {
    mid <- EMA(Cl(ohlc), n_EMA)    
    hi <- mid + multiplier * ATR(HLC = HLC(ohlc), n = n_ATR)$atr
    lo <- mid - multiplier * ATR(HLC = HLC(ohlc), n = n_ATR)$atr
    keltner <- cbind(lo, mid, hi)
    colnames(keltner) <- c("Kelt_lo", "Kelt_mid", "Kelt_hi")
    keltner
}

out <- get_Keltner_channels(AAPL)

# > tail(out)
# Kelt_lo Kelt_mid   Kelt_hi
# 2016-07-15 94.26621 97.09092  99.91563
# 2016-07-18 94.74742 97.58893 100.43045
# 2016-07-19 95.27084 98.00367 100.73651
# 2016-07-20 95.71888 98.35937 100.99986
# 2016-07-21 95.83500 98.55403 101.27306
# 2016-07-22 95.88848 98.57330 101.25811
库(quantmod)
getSymbols(“AAPL”)

获取Keltner频道
KC
KC如果您喜欢dplyr,这可能会有所帮助。调味

keltnerEmaPeriods = 20
keltnerAtrPeriods = 20
keltnerAtrMultiplier = 1.5
      
tidyquant::tq_mutate( mutate_fun=EMA, select=close, n=keltnerEmaPeriods) %>%
dplyr::rename( "Keltner_average"="EMA" ) %>%
tidyquant::tq_mutate( mutate_fun=ATR, n=keltnerAtrPeriods ) %>%
dplyr::select( -c("tr", "ATR", "ATR..1") ) %>%
dplyr::mutate( "Keltner_lower" = Keltner_average - keltnerAtrMultiplier * atr) %>%
dplyr::mutate( "Keltner_upper" = Keltner_average + keltnerAtrMultiplier * atr) %>%

如果您喜欢dplyr,这可能会有所帮助。调味

keltnerEmaPeriods = 20
keltnerAtrPeriods = 20
keltnerAtrMultiplier = 1.5
      
tidyquant::tq_mutate( mutate_fun=EMA, select=close, n=keltnerEmaPeriods) %>%
dplyr::rename( "Keltner_average"="EMA" ) %>%
tidyquant::tq_mutate( mutate_fun=ATR, n=keltnerAtrPeriods ) %>%
dplyr::select( -c("tr", "ATR", "ATR..1") ) %>%
dplyr::mutate( "Keltner_lower" = Keltner_average - keltnerAtrMultiplier * atr) %>%
dplyr::mutate( "Keltner_upper" = Keltner_average + keltnerAtrMultiplier * atr) %>%

Reduce(合并、列表(低、中、高))
是不必要的。使用TTR函数作为模板,并使用
try.xts
/
reclass
范例。然后您可以将
Reduce
行替换为
keltner@Joshua Ulrich感谢您的建议
Reduce(合并,列表(lo,mid,hi))
是不必要的。使用TTR函数作为模板,并使用
try.xts
/
reclass
范例。然后您可以将
Reduce
行替换为
keltner@Joshua Ulrich,谢谢您的建议