0

当我比较这两种方法时,SMA()需要收盘价作为 xts 格式的第一个参数,而 DonchianChannel()需要 xts 格式的 HL。然而,使用的是Cl(mktdata)SMA 与HLC(mktdata)[, 1:2].DonchianChannel()

为什么会这样?为什么我不能只使用HLC(mktdata)

add.indicator(strategy = strategy.st,
                  name = "SMA",
                  arguments = list(x = quote(Cl(mktdata)),
                                   n = 30),
                  label = "nSlow")
add.indicator(strategy = strategy.st, 
                  # correct name of function:
                  name = "DonchianChannel",
                  arguments = list(HL = quote(HLC(mktdata)[, 1:2]), 
                                   n = 20),
                  label = "DCH"

)
4

1 回答 1

0

HLC(mktdata)返回一个 3 列 xts 对象(High、Low 和 Close 列),但在 中DonchianChannel(HL = )HL需要 2 列,包含最高价和最低价,或者只有 1 列(比如收盘价)。不是 3 列。

查看函数的源代码,您会在开始时看到# of columns guard:

DonchianChannel <- function (HL, n = 10, include.lag = FALSE) 
{
    HL <- try.xts(HL, error = as.matrix)
    if (!(NCOL(HL) %in% c(1, 2))) {
        stop("Price series must be either High-Low, or Close/univariate.")
    }
.........
于 2022-01-19T11:45:40.703 回答