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渡します。stratstockyenable.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 に答える