【问题标题】:R - quantstrat orders cancel each otherR - quantstrat 订单相互取消
【发布时间】:2012-05-04 09:10:07
【问题描述】:

如何在 quantstrat 中输入相互取消的订单?例如,一旦我进入交易,我立即开两个订单:“止损”和“止盈”。一旦一个被填满,另一个将被取消。

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

目前,他们正在独立工作。

【问题讨论】:

  • 此功能将包含在“订单集”中。我有代码使用订单集来提供 OCO(一个取消另一个)订单功能,但它需要在提交之前进行测试。一旦有包含代码的svn rev,我将提供正式答案。

标签: r quantstrat


【解决方案1】:

SVN r 1010 将代码添加到 quantstrat,以便更轻松地使用 OCO(一个取消其他)订单集。 'macd' 演示 here 中有一个示例,它使用新公开的 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) 

注意 orderset='altexits' 参数添加到 ruleSignal 的参数列表中。

【讨论】:

  • 谢谢布赖恩。但是,想问您如何配置,以便只有当输入信号被执行时,才会下止损和获利订单,以防我想将我的输入订单更改为限价订单或由于仓位限制而无法执行。
  • 我修改了 ruleOrderProc 并获得了我的要求。此文件中存在一些错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
相关资源
最近更新 更多