使用订单规模函数实现规则
在 quantstrat 中,资产的成交数量不一定是固定的股票股数。让 quantstrat 能根据情况调整买卖股数的机制称为订单规模函数(order sizing functions)。由于编写一个完善的订单规模函数需要额外而复杂的语法,从零开始编写不在本课程范围内。
不过,使用预先编写好的订单规模函数很直接。首先要知道:当使用订单规模函数时,orderqty 参数将不再起作用,因为下单数量由订单规模函数决定。在 add.rule() 中调用订单规模函数也很简单。订单规模函数的输入与您在本章中一直使用的其他参数混合在一起,一并通过这些参数传入。
在本练习中,您将使用 osFUN 参数来指定名为 osMaxDollar 的函数。这里传入的不是字符串,而是对象。唯一的区别是订单规模函数的名称不加引号。
该函数的附加参数为 tradeSize 和 maxSize,两者都应传入您在前面章节中定义的 tradesize。该对象已在您的工作区中可用。
本练习是课程的一部分
R 中的金融交易
练习说明
- 您在之前练习中使用的
add.rule()命令已打印在您的工作区中。 - 通过指定
osFUN、tradeSize和maxSize,为此规则添加一个订单规模函数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Add a rule that uses an osFUN to size an entry position
add.rule(strategy = strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longentry", sigval = TRUE, ordertype = "market",
orderside = "long", replace = FALSE, prefer = "Open",
# Use the osFUN called osMaxDollar
osFUN = ___,
# The tradeSize argument should be equal to tradesize (defined earlier)
tradeSize = ___,
# The maxSize argument should be equal to tradesize as well
maxSize = ___),
type = "enter")