修改 ruleSignal 的 stoplimit 类型

modification for stoplimit type for ruleSignal

不知道有没有人可以帮我修改我的stoplimit(止损)规则。我怎样才能将其更改为以低于限价的收盘价卖出,而不是低于限价的低价卖出?

> #rules add.rule(strategy.st, name="ruleSignal", 
>          arguments=list(sigcol="buyTrigger", sigval=TRUE, ordertype="market", 
>                         orderside="long", replace=FALSE, prefer="Open", 
>                         osFUN=osDollarATR, tradeSize=tradeSize,
>                         pctATR=pctATR, atrMod="X"), 
>          type="enter", path.dep=TRUE,
>          label="newEntry")
> 
   add.rule(strategy.st, name="ruleSignal", 
         arguments=list(sigcol="buyTrigger", 
                        sigval=FALSE, 
                        ordertype="stoplimit", 
                        orderside="long", 
                        replace=FALSE, 
                        orderqty='all',
                        order.price=quote(mktdata$loss.stopLimit[timestamp]),
                        orderset="orders"),
         type="chain",
         parent="newEntry",
         label="takeProfitLong",
         path.dep=TRUE)

我下载了源码,打开tar.gz文件夹修改ruleOrderProc.R。

卸载并重新安装了软件包。经过几次尝试,我能够将代码修改为:

if ((orderQty > 0 && orderType != "stoplimit") || 
                    (orderQty < 0 && (orderType == "stoplimit"))) {
                    if ((has.Cl(mktdata) && orderPrice > as.numeric(Cl(mktdataTimestamp)[, 
                      1])) || (!has.Cl(mktdata) && orderPrice > 
                      as.numeric(getPrice(mktdataTimestamp, prefer = prefer)[, 
                        1])))

...