2014-12-23 43 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')

將再次啓用它。