Кажется, я не вижу, есть способ увидеть имя правила/метку транзакции при их просмотре. Я использую getTxns(), но он из пакета blotter и не знает правил, которые создаются методом квант. Какой был бы лучший способ сделать это?Маркировка правила Quantstrat в транзакции
1
A
ответ
1
Как правило, блоттер ничего не знает о том, что делает квант (кроме создания транзакций Quantstrat).
Я считаю, что функция tradeOrderStats
делает что-то близкое к тому, что вы ищете. Он объединяет книгу заказа Quantstrat, которая содержит метку правила, с таблицей blotter txn
.
Например:
require(quantstrat)
demo("macd", ask=FALSE)
head(tradeOrderStats(portfolio.st, stock.str),2)
Order.Qty Order.Price Order.Type Order.Side Order.Threshold
2007-08-17 "all" "117.049995" "market" "long" NA
2008-01-16 "all" "169.039997" "market" "long" NA
Order.Status Order.StatusTime Prefer Order.Set Txn.Fees Rule
2007-08-17 "closed" "2007-08-17 00:00:00" "" "exit2" "0" "exit"
2008-01-16 "closed" "2008-01-16 00:00:00" "" "exit2" "0" "exit"
Time.In.Force Start End Init.Pos Max.Pos Num.Txns
2007-08-17 "" "2007-03-16" "2007-08-17" "100" "100" "2"
2008-01-16 "" "2007-09-05" "2008-01-16" "100" "100" "2"
Max.Notional.Cost Net.Trading.PL MAE MFE
2007-08-17 " 8957" " 3249.0002" " 0.0000" " 5643.0003"
2008-01-16 "14416" " 1547.9994" "-1239.0003" " 5566.9992"
Pct.Net.Trading.PL Pct.MAE Pct.MFE tick.Net.Trading.PL
2007-08-17 " 0.36273308" " 0.00000000" "0.630010074" " 3249.0002"
2008-01-16 " 0.10738065" "-0.08594619" "0.386168086" " 1547.9994"
tick.MAE tick.MFE
2007-08-17 " 0.0000" " 5643.0003"
2008-01-16 "-1239.0003" " 5566.9992"
0
Вы можете объединить портфель заказов Quantstrat с Сделок Промокашка вручную, которая даст вам полный список операций (входов и выходов), а также ярлык правил для этой торговли.
library(plyr)
QSOrderbook <- ldply(getOrderBook(portfolio.st), data.frame)
rownames(QSOrderbook) <- as.POSIXct(QSOrderbook$data.Order.StatusTime, format = "%Y-%m-%d %H:%M")
bltrTransactions <- as.data.frame(getTxns(Portfolio=portfolio.st, symbols))
Transactions <- merge(QSOrderbook, bltrTransactions[-1,], by=0)