当我使用enable.rule时,我不能覆盖规则的内部enabled=FALSE。
例如,:
## Stop Loss Rule
stratstocky <- add.rule(stratstocky,
name = "ruleSignal",
arguments = list(sigcol = "sdH",
sigval = TRUE,
replace = FALSE,
orderside = "long",
ordertype = "stoptrailing",
tmult = TRUE,
threshold = quote(stopLossPercent),
orderqty = "all",
orderset = "ocolong"),
type = "chain",
parent = "getLong",
label = "StopTrailingLong",
enabled = FALSE
)当我将这些代码放在applyStrategy之前时:
enable.rule(stratstocky, type="chain", "StopTrail", enable=TRUE)规则将不会启用或激活。激活规则以更改规则的唯一方法是内部启用TRUE。我试过精确的拼写,但它对我不起作用。
这不是什么大问题,因为我可以用这种方式参数化规则的内部启用和控制,但更愿意使用现有代码来运行我的系统。
对enable.rule问题有任何见解吗?
发布于 2015-01-21 13:15:25
你的例子是不可重复的,但我可以用一些假设来再现你的问题。
看来你把store=TRUE和store=FALSE混为一谈了
您的add.rule调用似乎假定为store=FALSE,然后将stratstocky对象传递给enable.rule。
当store=FALSE时,enable.rule将返回策略对象。我相信在您的用例中,您可能希望:
stratstocky <- enable.rule(stratstocky, type="chain", "StopTrail", enable=TRUE)
使用现在启用的规则更新对象。
要创建一个可重复的示例,请尝试
demo('macross',ask=FALSE)
它将运行演示,并创建一些对象。就像我假设的示例一样,macross演示程序使用store=FALSE。
现在:
stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule',enable=FALSE)
将禁用退出规则,并且
stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule')
将再次启用它。
https://stackoverflow.com/questions/27627148
复制相似问题