2014-12-23 14 views
4

当我使用enable.rule时,我无法覆盖规则的内部enabled=FALSEquantstrat enable.rule不工作

例如:

## 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问题有何洞见?

回答

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 demo使用store=FALSE

现在:

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

将禁止出口的规则,

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

将再次启用它。