quantstrat enable.rule无法正常工作

use*_*188 4 r quantstrat

当我使用时,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
)
Run Code Online (Sandbox Code Playgroud)

当我在applyStrategy之前放置此代码时:

enable.rule(stratstocky, type="chain", "StopTrail", enable=TRUE)
Run Code Online (Sandbox Code Playgroud)

规则不会启用或激活.激活规则的唯一方法是改变它的内部启用TRUE.我尝试过精确的拼写,但它对我不起作用.

这不是一个大问题,因为我可以参数化规则的内部启用并以这种方式控制它,但更喜欢使用现有代码来运行我的系统.

enable.rule问题的任何见解?

Bri*_*son 5

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

看起来你正在混淆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)

这将运行演示,并创建一些对象.就像我认为的那样,macross演示使用store=FALSE.

现在:

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

将禁用退出规则,和

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

将再次启用它.