当我使用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
)
当我将此代码放在应用策略之前时:
enable.rule(stratstocky, type="chain", "StopTrail", enable=TRUE)
该规则不会启用或处于活动状态。激活规则的唯一方法是更改其内部启用TRUE
。我已经尝试了确切的拼写,但它对我不起作用。
这不是一个大问题,因为我可以参数化规则的内部启用并以这种方式控制它,但更愿意使用现有代码来运行我的系统。
对enable.rule
问题有什么见解吗?
您的示例不可重现,但我可以通过一些假设重现您的问题。
看来你把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)
这将运行演示,并创建一些对象。 就像我认为是您的示例一样,mcross 演示使用 store=FALSE
.
现在:
stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule',enable=FALSE)
将禁用退出规则,并且
stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule')
将再次启用它。