quantstrat パッケージを 0.7.7 (2013 年 1 月 7 日インストール) から 0.7.8 にアップグレードしましたが、古いコードが正しく動作しません。買いか売りかを問わずエントリー注文を出すことはできず、エグジット注文のみが実行されるようです。詳細はこちら。add.rule または applyStrategy 関数の主要な変更を誰かが知っていますか、または同じ問題が報告されていますか?
add.rule() で取引ルールを設定します
add.rule(f,'ruleSignal',arguments=list(sigcol="DoSell",sigval=TRUE,orderqty=(-1*tradeSize),osFUN='osSUS',ordertype='market',TxnFees="calcTxnFee",prefer='Open'),type='enter',label=gExitLabel)
add.rule(f,'ruleSignal',arguments=list(sigcol="DoBuy", sigval=TRUE,orderqty=tradeSize,osFUN='osBuy',ordertype='market',TxnFees="calcTxnFee",prefer='Price'),type='enter',label=gEnterLabel)
add.rule(f,'ruleSignal',arguments=list(sigcol="DoStop", sigval=TRUE,orderqty=-1*tradeSize,osFUN='osStop',ordertype='stoplimit',threshold='StopLevel',TxnFees="calcTxnFee"),type='risk',label='Stop')
私たちが抱えていた問題は、applyStrategy を実行したときにエントリ シグナルが得られないことです……getOrderbook には「Buy」と「Sell」があるようです……
applyStrategy(rs, rs) only applied sell signal ........(not buy)
[1] "2010-11-18 09:00:00 ABC -65660 @ 4.6"
[1] "2010-12-07 09:00:00 ABC -37509 @ 5.17"
しかし、getOrderBook() は順番に「Buy」と「Sell」を記録しました ..... 同時に、order.prices は「0」に設定され、order.status は「replaced」に設定され、システムによって Prefer 「Price」が設定されました