为什么 Close 和 HLC 共享数据的方式不同?
Why do Close and HLC have different methods to share data?
当我比较这两种方法时,SMA()
需要 xts 格式的收盘价作为第一个参数,而 DonchianChannel()
需要 xts 格式的 HL。但是,SMA 的用法是 Cl(mktdata)
,而 DonchianChannel()
的用法是 HLC(mktdata)[, 1:2]
。
为什么会这样?为什么我不能只使用 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"
)
HLC(mktdata)
returns 一个 3 列的 xts 对象(最高价、最低价和收盘价列),但在 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.")
}
.........
当我比较这两种方法时,SMA()
需要 xts 格式的收盘价作为第一个参数,而 DonchianChannel()
需要 xts 格式的 HL。但是,SMA 的用法是 Cl(mktdata)
,而 DonchianChannel()
的用法是 HLC(mktdata)[, 1:2]
。
为什么会这样?为什么我不能只使用 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"
)
HLC(mktdata)
returns 一个 3 列的 xts 对象(最高价、最低价和收盘价列),但在 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.")
}
.........