Quantstrat sigPeak error: "k must be a non-negative integer"
Quantstrat sigPeak error: "k must be a non-negative integer"
我正在尝试使用 sigPeak
信号,我添加它的代码是:
add.signal(strategy=strat.id, name='sigPeak',
arguments=list(column='ADX.ADX', direction="peak", data=quote(mktdata)),
label='ADX.peak')
但是,当我 运行 applySignals(..., applyIndicators(..))
添加那个后,我得到一个错误:
Error in FUN(X[[i]], ...) : k must be a non-negative integer
我认为这是由于 codicum 中的矛盾 quantmod
和 quantstrat
:
Quantstrat,在sigPeak
的定义中:
Lag(ret_sig,-1)
Quantmod,在 Lag.quantmod.OHLC
的定义中,因为这是在 XTS 对象上使用的那个:
if(k.e<0||k.e!=as.integer(k.e)) stop("k must be a non-negative integer")
这是否意味着对于当前版本的 quantmod 和 quantstrat,sigPeak
根本不起作用?
我不确定该功能何时处于工作状态。该行是在 2011 年 3 月的修订版 588 中添加的。在此之前,函数的状态是:
sigPeak <- function(label,data,column, direction=c("peak","bottom")){
colNum<-match.names(column,colnames(data))
direction=direction[1] # only use the first]
switch(direction,
"peak" = { Lag(data[,colNum],2) < Lag(data[,colNum],1) & Lag(data[,colNum],1) > data[,colNum] } ,
"bottom","valley" = { Lag(data[,colNum],2) > Lag(data[,colNum],1) & Lag(data[,colNum],1) < data[,colNum] }
)
colnames(ret_sig)<-paste(label,direction,"sig",sep='.')
return(ret_sig)
}
您可以看到 ret_sig
在通过 colnames
引用之前并未创建,因此对 colnames
的调用会引发错误。
无论如何,要解决您只需要删除 Lag(ret_sig, -1)
行的问题。该值未分配给任何东西,因此它实际上没有做任何事情。
已在 issue #41 中报告并修复。
我正在尝试使用 sigPeak
信号,我添加它的代码是:
add.signal(strategy=strat.id, name='sigPeak',
arguments=list(column='ADX.ADX', direction="peak", data=quote(mktdata)),
label='ADX.peak')
但是,当我 运行 applySignals(..., applyIndicators(..))
添加那个后,我得到一个错误:
Error in FUN(X[[i]], ...) : k must be a non-negative integer
我认为这是由于 codicum 中的矛盾 quantmod
和 quantstrat
:
Quantstrat,在sigPeak
的定义中:
Lag(ret_sig,-1)
Quantmod,在 Lag.quantmod.OHLC
的定义中,因为这是在 XTS 对象上使用的那个:
if(k.e<0||k.e!=as.integer(k.e)) stop("k must be a non-negative integer")
这是否意味着对于当前版本的 quantmod 和 quantstrat,sigPeak
根本不起作用?
我不确定该功能何时处于工作状态。该行是在 2011 年 3 月的修订版 588 中添加的。在此之前,函数的状态是:
sigPeak <- function(label,data,column, direction=c("peak","bottom")){
colNum<-match.names(column,colnames(data))
direction=direction[1] # only use the first]
switch(direction,
"peak" = { Lag(data[,colNum],2) < Lag(data[,colNum],1) & Lag(data[,colNum],1) > data[,colNum] } ,
"bottom","valley" = { Lag(data[,colNum],2) > Lag(data[,colNum],1) & Lag(data[,colNum],1) < data[,colNum] }
)
colnames(ret_sig)<-paste(label,direction,"sig",sep='.')
return(ret_sig)
}
您可以看到 ret_sig
在通过 colnames
引用之前并未创建,因此对 colnames
的调用会引发错误。
无论如何,要解决您只需要删除 Lag(ret_sig, -1)
行的问题。该值未分配给任何东西,因此它实际上没有做任何事情。
已在 issue #41 中报告并修复。