#' Get Gap Strategie's results with some calculated columns
#'
#' @param dbcon_str Connection string for Sharadar or QuoteMedia.
#' @param add_perf Weather to include calculated performance metrics.
#'
#' @return data.table of Gap strategy bakctest results
#' @export
getGapStrategyResults <- function(dbcon_str, add_perf = TRUE) {
# Functions
addScore <- function(results) {
results <- results %>%
dplyr::group_by(range) %>%
dplyr::mutate(score =
# Profit Factor
((pf - min(pf)) / (max(pf) - min(pf))) +
# Return / DD
((ret_dd - min(ret_dd)) / (max(ret_dd) - min(ret_dd))) +
# Net return
((return - min(return)) / (max(return) - min(return)))) %>%
data.table::data.table()
return(results)
}
# All data from open_gap table
con <- DBI::dbConnect(SQLite(), dbcon_str)
results <- DBI::dbReadTable(con, "open_gap") %>% data.table::data.table()
DBI::dbDisconnect(con)
if (add_perf) {
# Add performance columns
results[, return := ttl_win + ttl_lose]
results[, ret_dd := return / abs(drawdown)]
results[, days := win_days + lose_days]
results[, win_ratio := win_days / days]
results[, avg_win := ttl_win / win_days]
results[, avg_lose := ttl_lose / lose_days]
results[, pf := ttl_win / abs(ttl_lose)]
# Add score
results <- addScore(results)
}
return (results)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.