quantstrat で「始値で次のバーで購入」を実装する方法は?
これは、maCross.R サンプルを使用した私の実験です。
prefer='Open'
ruleSignalに追加stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal', arguments = list(sigcol="ma50.gt.ma200", sigval=TRUE, orderqty=100000, ordertype='market', orderside='long', prefer='Open'), type='enter') stratMACROSS <- add.rule(strategy = stratMACROSS, name='ruleSignal', arguments = list(sigcol="ma50.lt.ma200", sigval=TRUE, orderqty=-100000, ordertype='market', orderside='long', prefer='Open'), type='exit')
注文は現在の
Open
価格で生成されましたが、次のバーで実行されましたClose
。> orders <- getOrderBook(portfolio.st) > head(orders) Order.Qty Order.Price Order.Type Order.Side Order.Threshold Order.Status Order.StatusTime 2011-05-22 00:00:00 "0" NA "init" "long" "0" "closed" "2011-05-22" 2011-05-24 04:30:00 "1e+05" "1.61297" "market" "long" NA "closed" "2011-05-24 05:00:00" 2011-05-25 03:00:00 "-1e+05" "1.61523" "market" "long" NA "closed" "2011-05-25 03:30:00" 2011-05-25 05:00:00 "1e+05" "1.61537" "market" "long" NA "closed" "2011-05-25 05:30:00" 2011-05-30 09:30:00 "-1e+05" "1.64679" "market" "long" NA "closed" "2011-05-30 10:00:00" > txns <- getTxns(Portfolio=portfolio.st, Symbol=fx.st[1]) > head(txns) Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Net.Txn.Realized.PL 2011-05-22 00:00:00 0e+00 0.00000 0 0 0.00000 0 2011-05-24 05:00:00 1e+05 1.61227 0 161227 1.61227 0 2011-05-25 03:30:00 -1e+05 1.61437 0 -161437 1.61437 210 2011-05-25 05:30:00 1e+05 1.61929 0 161929 1.61929 0 2011-05-30 10:00:00 -1e+05 1.64584 0 -164584 1.64584 2655 2011-05-30 19:30:00 1e+05 1.65046 0 165046 1.65046 0
たとえば、注文は 2011-05-25 03:00:00 に
Open
価格 1.61523 で生成されましたが、トランザクションは 03:30:00 に価格 1.61437 でClose
生成されました市場データを以下に示します。
Date Time Open High Low Close Up Down 5/24/2011 430 1.61297 1.6153 1.61288 1.61421 1804 1700 5/24/2011 500 1.61409 1.61445 1.61224 1.61227 1709 1662 5/25/2011 300 1.61523 1.61628 1.61318 1.6139 1526 1465 5/25/2011 330 1.61393 1.61541 1.61345 1.61437 1713 1583