用批改的DonchianChannel()函数计较唐奇安通道指标
当前位置:以往代写 > 其他教程 >用批改的DonchianChannel()函数计较唐奇安通道指标
2019-06-14

用批改的DonchianChannel()函数计较唐奇安通道指标

用批改的DonchianChannel()函数计较唐奇安通道指标

唐奇安通道(Donchian Channel)指标是由Richard Donchian提出的一个由三条线构成的通道指标体系(称之为体系有点说大了),这三条线别离是已往n日的较高价、已往n日的较低价以及已往n日较高价和较低价的均值,形状看起来很像通道,所以叫这个名字。
R软件中的TTR包提供了一个DonchianChannel()函数来计较唐奇安通道,原来应该用起来很利便的,遗憾的是DonchianChannel()函数的代码存在错误。计较唐奇安通道是依据的数据应该是:
Topt(n)=max(pt1,pt2,…ptn)
即不该该包括本期值。而DonchianChannel()函数恰恰包括了本期值。按照凡是的用法,当股价向上打破20日唐奇安通道值时采纳买入计策,假如计较唐奇安通道值时包括了本期值,就永远不行能存在向上打破的大概。
看一下DonchianChannel()函数的bug。

> DonchianChannel
function (HL, n = 10) 
{
    if (!(NCOL(HL) %in% c(1, 2))) {
        stop("Price series must be either High-Low, or Close/univariate.")
    }
    if (NCOL(HL) == 2) {
        hi < - HL[, 1]
        lo <- HL[, 2]
    }
    else {
        hi <- HL
        lo <- HL
    }
    high <- runMax(hi, n)
    low <- runMin(lo, n)
    mid <- (high + low)/2
    result <- cbind(high, mid, low)
    colnames(result) <- c("high", "mid", "low")
    return(result)
}

所以,在DonchianChannel()函数的基本上加上一期滞后才是正确的唐奇安通道值。举个例子:

> getSymbols("APPL", adjust=TRUE)
> head(cbind((APPL), lag(DonchianChannel(cbind(Hi(APPL),Lo(APPL)),n=5)),k=1),n=10)

    关键字:

在线提交作业