可以通过添加自定义函数来实现添加更多指标的目的。具体步骤如下:
1.编写一个自定义函数,使用mktdata中的数据计算所需指标,并将指标作为新的列添加到mktdata对象中。例如,下面是一个简单的在mktdata中添加EMA30和SMA50的自定义函数。
add.indicator(myStrategy, name = "addTwoIndicators", arguments = list(x = quote(Cl(mktdata)), y = NA), label = "EMA30&SMA50")
2.在Quantstrat中使用add.indicator()函数来添加自定义指标。在这种情况下,将自定义函数的名称传递给add.indicator()函数。例如,使用下面的代码添加自定义指标:
add.indicator(strategy = myStrategy,
name = "addTwoIndicators",
arguments = list(x = quote(mktdata), y = NA),
label = "EMA30&SMA50")
这将在mktdata中添加两列,分别是EMA30和SMA50。在后续的策略编写中,可以使用这些列作为指标计算条件。
完整的示例代码如下:
library(quantstrat)
# Custom Function to add two indicators
addTwoIndicators <- function(x, y) {
xEMA30 <- EMA(x, n = 30)
ySMA50 <- SMA(y, n = 50)
res <- data.frame(EMA30 = xEMA30, SMA50 = ySMA50)
return(res)
}
# Initialize
start.date <- as.Date("2010-01-01")
initEq <- 100000
portSize <- initEq
symbols <- "SPY"
currency("USD")
stock(symbols, currency = "USD", multiplier = 1)
# Get & Set Data
getSymbols(symbols, from