#' Walforward analysis of "Open Gap Strategy"
#'
#' @param params Strategies' parameters by ranges
#'
#' @importFrom foreach %do%
#'
#' @return Strategy backtest result.
#' @export
calcGapStrategyWFA <- function(params) {
# Columns for data request
columns <- c("open", "high", "low", "close", "adj.open", "roc.pc2to",
"sma", "sd", "avg.tover", "open.gap.coef")
trans <- foreach::foreach(i = 1:nrow(params), .combine = "rbind") %do% {
# Abbreviation
p <- params[i, ]
print(p[,1:16])
start_date <- stringr::str_split(p$range, "::", simplify = TRUE)[1]
end_date <- stringr::str_split(p$range, "::", simplify = TRUE)[2]
symbols <- getActiveSymbols(settings$sharadar.sqli, start_date, end_date)
# Request data
data <- getSliceData(settings$sharadar.sqli, columns, start_date, end_date,
symbols, TRUE, p$sma_len, p$sd_len,
p$ato_len, p$ogc_len)
calcGapStrategy(p, data, "trans")
}
# Equity Curve
first_date <- stringr::str_split(params[1]$range, "::", simplify = TRUE)[1]
last_date <- stringr::str_split(params[nrow(params)]$range, "::",
simplify = TRUE)[2]
equity_curve <- calcEquityCurveFromTrans(trans, NULL, first_date, last_date)
perf <- calcPerformance(equity_curve)
plot <- buildEquityCurvePlot(equity_curve, perf)
result <- list(
params = params,
trans = trans,
equity_curve = equity_curve,
perf = perf,
plot = plot
)
return(result)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.