IKTrading::SIG的交叉参数是否确实必要?
IKTrading::SIG的交叉参数是否确实必要?,r,algorithmic-trading,quantstrat,R,Algorithmic Trading,Quantstrat,sigAND是一个有用的函数,用于在两个选定列都有值(或不为NA)时创建一个带有日期的新列。感谢伊利亚·基普尼斯和他的IKTrading套餐 但是,我注意到在这个函数的帮助页面中,使用了cross。我感到困惑的是,如果我对上述sigAND用法的理解是正确的,那么就不应该有cross的位置 我查看了sigAND源代码,并对其进行了测试。该函数工作正常,当cross=TRUE时,输出列仅为NA或FALSE的向量。因此,cross在函数中似乎没有真正的意义 这是我的假数据和输入: dataAnd &l
sigAND
是一个有用的函数,用于在两个选定列都有值(或不为NA)时创建一个带有日期的新列。感谢伊利亚·基普尼斯和他的IKTrading
套餐
但是,我注意到在这个函数的帮助页面中,使用了cross。我感到困惑的是,如果我对上述sigAND
用法的理解是正确的,那么就不应该有cross
的位置
我查看了sigAND
源代码,并对其进行了测试。该函数工作正常,当cross=TRUE
时,输出列仅为NA
或FALSE
的向量。因此,cross
在函数中似乎没有真正的意义
这是我的假数据和输入:
dataAnd <- cbind(c(1, NA, 3, NA, NA, 10, 12), 7:13)
dataAnd <- xts(dataAnd, order.by = Sys.Date()+1:7)
colnames(dataAnd) <- c("col1", "col2")
label = "both"
data = dataAnd
columns = c("col1", "col2")
cross = T # F
我加载了数据和输入,并在没有注释掉前几行和后几行的情况下运行了上面的源代码
当cross=FALSE
时,我得到了以下输出:
> ret_sig
both
2016-03-19 1
2016-03-20 NA
2016-03-21 1
2016-03-22 NA
2016-03-23 NA
2016-03-24 1
2016-03-25 1
当cross=TRUE
时,我得到了以下输出:
> ret_sig
both
2016-03-19 NA
2016-03-20 NA
2016-03-21 NA
2016-03-22 NA
2016-03-23 NA
2016-03-24 NA
2016-03-25 FALSE
第二种情况表明,
cross
在那里没有意义。或者,我是不是错过了一些重要的东西?谁能看一下吗?多亏了伊利亚的回答sigAND
的cross=T
是非常必要的。我引用伊利亚的回答如下:
当收盘>SMA200且RSI<20时买入
如果没有十字架,你每天都会买
这是真的。只有当RSI在20以下交叉时
关闭>SMA200
我改变了我的简单示例,它确实起了作用
数据和变量:
dataAnd <- cbind(c(1, 0, 0, 1, 1, 1, 1), c(0, 0, 1, 1, 1, 0,1 ))
dataAnd <- xts(dataAnd, order.by = Sys.Date()+1:7)
colnames(dataAnd) <- c("col1", "col2")
label = "both"
data = dataAnd
columns = c("col1", "col2")
cross = T # F
通过cross=F
,我得到:
both
2016-03-20 0
2016-03-21 0
2016-03-22 0
2016-03-23 1
2016-03-24 1
2016-03-25 0
2016-03-26 1
both
2016-03-20 NA
2016-03-21 FALSE
2016-03-22 FALSE
2016-03-23 TRUE
2016-03-24 FALSE
2016-03-25 FALSE
2016-03-26 TRUE
通过cross=T
,我得到:
both
2016-03-20 0
2016-03-21 0
2016-03-22 0
2016-03-23 1
2016-03-24 1
2016-03-25 0
2016-03-26 1
both
2016-03-20 NA
2016-03-21 FALSE
2016-03-22 FALSE
2016-03-23 TRUE
2016-03-24 FALSE
2016-03-25 FALSE
2016-03-26 TRUE