使用外部提供的quantstrat指标数据
我正在考虑使用R和quantstrat对一些策略进行回溯测试。我看了一些文档和youtube视频,想知道是否可以做我想做的事情。我对R完全陌生,我愿意深入研究必要的文档,但我想得到一个提示,如果我想要的是可能的 我已经用quantstrat做了一些回溯测试的例子,所有这些例子的共同点是,它们都使用基于价格数据的R函数计算的指标 然而,我需要使用的是一些外部计算的指标,这些指标与价格数据一起作为真/假信息。因此,在包含OHLC数据的CSV中,我有许多额外的列,这些列的值在大多数情况下为false,但在某些行上为true。我想生成信号,例如使用其中两列,并说“如果两者都是真的,在最后一天的高点进行止损买入,止损在最后一天的低点,并计算头寸大小,以便最大损失是基于高低差值的固定金额 关于何时平仓获利、何时调整止损或何时取消未触发的止损单,还有很多规则需要应用,我还必须处理下一天开盘价已经高于止损价的情况,但这是另一回事。此外,我还必须考虑如何对En进行回溯测试只有日终数据的d日策略(接下来的几天,蜡烛可能会同时高出停止买入和停止卖出,并超过其含糊不清的结果) 首先,我想知道是否有可能将这些外部指标数据作为quantstrat战略的来源 如果你说“是”或“否”,可能会帮我找到适用的文档。谢谢你的建议 编辑: 实际上,我现在创建了一个包含OHLC列的CSV文件,并添加了另一个包含1和0的列,就像这个非常简单的示例:使用外部提供的quantstrat指标数据,r,quantitative-finance,quantstrat,R,Quantitative Finance,Quantstrat,我正在考虑使用R和quantstrat对一些策略进行回溯测试。我看了一些文档和youtube视频,想知道是否可以做我想做的事情。我对R完全陌生,我愿意深入研究必要的文档,但我想得到一个提示,如果我想要的是可能的 我已经用quantstrat做了一些回溯测试的例子,所有这些例子的共同点是,它们都使用基于价格数据的R函数计算的指标 然而,我需要使用的是一些外部计算的指标,这些指标与价格数据一起作为真/假信息。因此,在包含OHLC数据的CSV中,我有许多额外的列,这些列的值在大多数情况下为false,
Date,Open,High,Low,Close,SRot
2016-02-01,28,31,20,20,0
2016-01-29,34,35,30,31,1
2016-01-28,22,30,21,28,0
2016-01-27,18,23,17,20,0
2016-01-26,30,32,20,25,0
2016-01-25,30,35,25,32,1
我把它放到一个xts对象中,设置了一个quantstrat策略,在最后一列为1的那几天之后,我成功地触发了止损限制短期订单
add.rule(strategy.st,name = "ruleSignal",
arguments=list(sigcol="srotxsignal",
sigval=TRUE,
ordertype="stoplimit",
orderside="short",
replace=FALSE,
prefer="Low",
orderqty=10,
tradeSize=tradeSize),
type="enter",path.dep=TRUE,label="normalEntryShort")
在1月25日的第一支蜡烛上,第一个信号已经发出,低点为25,我预计系统将发出价格水平为25的限价卖出指令。这也是订单簿上显示的。然而,第二天,系统实际上以30的水平卖出,这是开盘价。对于最后一天的第二个信号当天,订单被触发,但从未执行。这可能是正确的,因为开盘价已经低于开始时的止损限额水平,但最后一天的价格上涨至31,因此应该触发订单
我想对于第二个信号,我需要更多的逻辑编程,但是对于第一个信号,我不知道为什么命令在30执行
out<-applyStrategy(strategy=strategy.st,portfolios=portfolio.st)
[1] "2016-01-26 00:00:00 adidas 10 @ 30"
getOrderBook(portfolio.st)
$dshort
$dshort$adidas
Order.Qty Order.Price Order.Type Order.Side Order.Threshold Order.Status Order.StatusTime Prefer
2016-01-25 "10" "25" "stoplimit" "short" NA "closed" "2016-01-26 00:00:00" "Low"
2016-01-29 "10" "30" "stoplimit" "short" NA "open" NA "Low"
out由于您试图做空,您的订单数量可能应该是负数。单行建议应该在注释中。@Rumit:好的。SEIndeed是新来的!显然是新来的!这是固定的吗?我刚刚看到了。