R 运行功能链订单、订单、价格

R 运行功能链订单、订单、价格,r,quantstrat,R,Quantstrat,目标:使用时间戳生成一个停止限制(也称为非尾随停止)。大部分编码都是从Ilya Kipnis设计的基于ATR的位置大小计算中盗取的。代码的链接在下面的注释中,因此可以复制 我相当肯定这个函数会产生预期的效果,但我不知道order.price需要什么类型的信息。似乎我需要指出这是一个函数,而不是一个数字 我正在链式订单中运行以下函数,以计算order.price stopATR <- function(atrMod="") { atrString <- paste0("atr",a

目标:使用时间戳生成一个停止限制(也称为非尾随停止)。大部分编码都是从Ilya Kipnis设计的基于ATR的位置大小计算中盗取的。代码的链接在下面的注释中,因此可以复制

我相当肯定这个函数会产生预期的效果,但我不知道order.price需要什么类型的信息。似乎我需要指出这是一个函数,而不是一个数字

我正在链式订单中运行以下函数,以计算order.price

stopATR <- function(atrMod="") {
  atrString <- paste0("atr",atrMod)
  atrCol <- grep(atrString, colnames(mktdata))
  atrTimeStamp <- mktdata[timestamp, atrCol]
  atrStop <- atrTimeStamp * pctATR*100
  atrString <- paste0("EMA.currentPrice")
  priceCol <- grep(atrString, colnames(mktdata))
  currentPrice <- mktdata[timestamp, priceCol]
  out <- currentPrice-atrStop
  colnames(out) <- "atrStopLoss"
  return(out)
}

#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=TRUE, ordertype="stoplimit", 
                        orderside="long", replace=FALSE, 
                        orderqty='all',
                        order.price=stopATR,
                        orderset="orders"), 
         type="chain",
         parent="newEntry",
         label="stopLossLong",
         path.dep=TRUE)

我编写了以下函数并通过add.indicator运行它。然后我只引用mktdata中的列,将其用作stoplimit

stopOut <- function (x, n, maType, HLC, pctATR) {
  EMA <- EMA(x, n, maType=maType)
  ATR <- ATR(HLC, n=n, maType=maType)
  ATR <- ATR$atr
  atrStop <- EMA - (ATR*100*pctATR)
  return(atrStop)
}

add.indicator(strategy.st, name="stopOut",
              arguments=list(x=quote(HLC(mktdata)), n=period, wilder=TRUE, HLC=quote(HLC(mktdata)), pctATR=pctATR),
              label="stopLimit")

add.rule(strategy.st, name="ruleSignal", 
         arguments=list(sigcol="buyTrigger", 
                        sigval=TRUE, 
                        ordertype="stoplimit", 
                        orderside="long", 
                        replace=FALSE, 
                        orderqty='all',
                        order.price=quote(mktdata$EMA.stopLimit[timestamp]),
                        orderset="orders"),
         type="chain",
         parent="newEntry",
         label="takeProfitLong",
         path.dep=TRUE)
停止
stopOut <- function (x, n, maType, HLC, pctATR) {
  EMA <- EMA(x, n, maType=maType)
  ATR <- ATR(HLC, n=n, maType=maType)
  ATR <- ATR$atr
  atrStop <- EMA - (ATR*100*pctATR)
  return(atrStop)
}

add.indicator(strategy.st, name="stopOut",
              arguments=list(x=quote(HLC(mktdata)), n=period, wilder=TRUE, HLC=quote(HLC(mktdata)), pctATR=pctATR),
              label="stopLimit")

add.rule(strategy.st, name="ruleSignal", 
         arguments=list(sigcol="buyTrigger", 
                        sigval=TRUE, 
                        ordertype="stoplimit", 
                        orderside="long", 
                        replace=FALSE, 
                        orderqty='all',
                        order.price=quote(mktdata$EMA.stopLimit[timestamp]),
                        orderset="orders"),
         type="chain",
         parent="newEntry",
         label="takeProfitLong",
         path.dep=TRUE)