4

quantstrat で互いにキャンセルする注文を入力する方法は? たとえば、取引を開始したら、すぐに「ストップロス」と「テイクプロフィット」の 2 つの注文を開きます。どちらかが埋まり次第、もう一方はキャンセルとなります。

#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) 

現在、彼らは独立して活動しています。

4

1 に答える 1

9

SVN r 1010は、コードをquantstratに追加して、OCO(One Cancels Other)オーダーセットを使いやすくします。ここの「macd」デモには、新しく公開された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'パラメーターが追加れていることに注意してください。

于 2012-05-04T12:05:12.433 に答える