我在Quantstrat文档中找不到add.rule参数的定义.我很想知道orderqty,tradeSize和maxSize之间的区别.
在quantstrattrader上找到以下相关资料:
该orderqty参数仅在没有osFUN指定时适用.它可以采用平坦值(EG 1,2),或者,当规则类型为"退出"时,采用"全部"数量来平展位置.
在osFUN指定要使用的订单尺寸功能.该osFUN参数实际上是一个作为参数传入的函数对象.如果您不想使用osFUN,只需使用固定数量,例如100,或者如果使用退出类型订单,请使用"全部"展平仓位.
这是一个add.rule函数的样子:
add.rule(strategy.st, name = "ruleSignal",\n arguments = list(sigcol = "longsig",\n sigval = TRUE, \n ordertype = "market",\n prefer = "Open", \n orderside = "long",\n orderqty = 100,\n replace = FALSE, \n osFUN = osMaxPos,\n tradeSize = 100,\n maxSize = 100),\n type = "enter")\nRun Code Online (Sandbox Code Playgroud)
谢谢.
@ blackknight316是对的.看一下ruleSignal (print ruleSignal)的代码.你会看到没有正式的论证tradeSize或者maxSize.
然而,该ruleSignal函数在调用时不会生成错误,因为它使用省略号参数(即...).请阅读官方R语言文档中的此特殊参数.
打印ruleSignal并查看来源.这是一部分:
orderqty <- osFUN(strategy = strategy, data = mktdata,
timestamp = timestamp, orderqty = orderqty, ordertype = ordertype,
orderside = orderside, portfolio = portfolio,
symbol = symbol, ... = ..., ruletype = ruletype,
orderprice = as.numeric(orderprice))
Run Code Online (Sandbox Code Playgroud)
使用...(如同addOrder).
tradeSize并且maxSize包含在add.rule链接代码中可能是因为它们被传递给您链接的示例中使用的orderizing函数.查看osFUN=osDollarATR实际上是一个函数的对象的参数. osDollarATR当然是作者用户定义的.您可能会在另一篇博客文章中找到该函数的定义并查看tradeSize并且maxSize是它的正式参数.