R/calcGapStrategyWFA.R

Defines functions calcGapStrategyWFA

Documented in calcGapStrategyWFA

#' 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)
}
tmk-c/myrlib documentation built on May 29, 2019, 1:44 p.m.