2012-05-04 4 views
3

お互いをクオンタットでキャンセルする注文を入力するにはどうすればいいですか?例えば、私が貿易に入るとすぐに、私はすぐに2つの注文を開きます: "損失を止める"と "利益を取る"。 1つがいっぱいになると、もう1つはキャンセルされます。R - クォンタムオーダーがお互いにキャンセルされます

#Enter signal 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, orderqty=100, 
            ordertype="market", orderside="long", 
            pricemethod="market", osFUN=osMaxPos), 
        type="enter", path.dep=TRUE) 

#Stop loss 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="short", threshold=-5, 
            tmult=FALSE), 
        type="exit", path.dep=TRUE) 

#Take profit 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="short", threshold=5, 
            tmult=FALSE), 
        type="exit", path.dep=TRUE) 

現在、これらは独立して動作しています。

+0

この機能は「オーダーセット」でカバーされます。私はオーダーセットを使用してOCO(他をキャンセルする)オーダー機能を提供するコードを持っていますが、コミットする前にテストが必要です。私はコードが含まれているsvn revがあると正式な答えを提供します。ブライアン –

答えて

8

SVN r 1010は、OCO(One Cancels Other)オーダーセットを使いやすくするために、quantstratにコードを追加します。 'macd'デモhereには、新しく公開されたordersetパラメータを使用して、終了注文にOCO機能を提供する例があります。

この機能を使用するには、最新のsvn(r1010以降)を使用する必要があります。また、注文サイジング機能が少し壊れていることにも気づくでしょう。私たちはそれに取り組んでいます。

#Enter signal 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, orderqty=100, 
            ordertype="market", orderside="long", 
            pricemethod="market", osFUN=osMaxPos), 
        type="enter", path.dep=TRUE) 

#Stop loss 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="long", threshold=-5, 
            tmult=FALSE, orderset='altexits'), 
        type="exit", path.dep=TRUE) 

#Take profit 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="long", threshold=5, 
            tmult=FALSE, orderset='altexits'), 
        type="exit", path.dep=TRUE) 

ruleSignalの引数リストへorderset = 'altexits'パラメータの追加:

あなたの例では、順序セットを使用するには、次のようになります。

+0

thxただし、入力を制限するために入力オーダーを変更したい場合や、ポジション制限のために実行されない場合に備えて、信号入力が完了し、損失を止め、利益オーダーを取るように設定する方法を尋ねます。 – SilverSpoon

+0

iveはruleOrderProcを変更し、私の要件を取得しました。このファイルのいくつかのバグ。 – SilverSpoon

関連する問題