r语言 - quantstrat enable.rule 不起作用



当我使用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=TRUEstore=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')

将再次启用它。

最新更新