4

当我使用时,enable.rule我无法覆盖规则的 internal 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对问题有任何见解吗?

4

1 回答 1

5

您的示例不可重现,但我可以通过一些假设重现您的问题。

看来您正在store=TRUE混淆store=FALSE

您的add.rule调用似乎假设store=FALSE,然后您将stratstocky对象传递给enable.rule.

store=FALSEenable.rule将返回策略对象。我相信在您的用例中,您可能想要:

stratstocky <- enable.rule(stratstocky, type="chain", "StopTrail", enable=TRUE)

使用现在启用的规则更新您的对象。

要创建可重现的示例,请尝试

demo('macross',ask=FALSE)

这将运行演示,并创建一些对象。就像我认为是您的示例一样,宏演示使用store=FALSE.

现在:

stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule',enable=FALSE)

将禁用退出规则,并且

stratMACROSS <- enable.rule(stratMACROSS,type='exit',label='ruleSignal.rule')

将再次启用它。

于 2015-01-21T13:15:25.813 回答