context("Test calcGapStrategy")
# Prepare params and data
start_date <- "2009-01-05"
end_date <- "2009-01-09"
range <- paste(start_date, end_date, sep = "::")
params <- data.frame(
range = range,
sma_len = 0,
sd_len = 50,
ato_len = 200,
ogc_len = 0,
side = "Long",
z_thres = Inf,
sd_thres = 0.01,
ato_l_thres = 10000000,
ato_h_thres = Inf,
ogc_thres = 0,
stop_thres = 0.3,
min_thres = 10,
slippage = 0.001,
num_trades = 10,
lot = 10000,
stringsAsFactors = FALSE
)
# Save data for backtest
# columns <- c("open", "high", "low", "close", "adj.open", "roc.pc2to",
# "sma", "sd", "avg.tover", "open.gap.coef")
# symbols <- getActiveSymbols(settings$sharadar.sqli, start_date, end_date)
# data <- getSliceData(settings$sharadar.sqli, columns, start_date, end_date,
# symbols, TRUE, params$sma_len, params$sd_len,
# params$ato_len, params$ogc_len)
# saveRDS(data, "./inst/testdata/data_calcGapStrategy.rds")
data <- readRDS(system.file("testdata/data_calcGapStrategy.rds",
package = "myrlib"))
test_that("function returns correct data.", {
result <- calcGapStrategy(params, data, output = "full")
# Test names and dim
expect_equal(names(result), c("simple", "signal", "trans", "equity_curve",
"perf", "plot"))
expect_length(result, 6)
expect_equal(nrow(result$simple), 1)
expect_equal(ncol(result$simple), 21)
expect_equal(nrow(result$signal), 5)
expect_equal(nrow(result$trans), 40)
expect_equal(ncol(result$trans), 19) # Debug = TRUE: 19
expect_equal(nrow(result$equity_curve), 5)
expect_equal(ncol(result$equity_curve), 5)
expect_equal(nrow(result$perf), 1)
expect_equal(ncol(result$perf), 5)
# Test types
expect_is(result$simple, "data.frame")
expect_is(result$signal, "xts")
expect_is(result$trans, "data.table")
expect_is(result$equity_curve, "data.table")
expect_is(result$perf, "data.frame")
expect_is(result$plot, "ggplot")
expect_is(index(result$signal), "POSIXct")
expect_is(result$trans$date, "Date")
expect_is(result$equity_curve$date, "Date")
# Test values
expect_equal(result$simple$range, "2009-01-05::2009-01-09")
expect_equal(result$simple$ttl_win, 3047.45)
expect_equal(result$simple$ttl_lose, -371.06)
expect_equal(result$simple$drawdown, -237.05)
expect_equal(result$simple$win_days, 2)
expect_equal(result$simple$lose_days, 2)
expect_equal(result$perf$ttl_win, 3047.45)
expect_equal(result$perf$ttl_lose, -371.06)
expect_equal(result$perf$drawdown, -237.05)
expect_equal(result$perf$win_days, 2)
expect_equal(result$perf$lose_days, 2)
expect_equal(head(index(result$signal), 1), as.POSIXct(start_date))
expect_equal(tail(index(result$signal), 1), as.POSIXct(end_date))
expect_equal(head(result$trans$date, 1) - 1, as.Date(start_date))
expect_equal(tail(result$trans$date, 1), as.Date(end_date))
expect_equal(head(result$equity_curve$date, 1), as.Date(start_date))
expect_equal(tail(result$equity_curve$date, 1), as.Date(end_date))
})
test_that("function check inputs correctly.", {
expect_error(calcGapStrategy(data.frame(), data, output = "full"),
"Params must at least have range.")
dummy.data <- list(hoge = data.frame())
expect_error(calcGapStrategy(params, dummy.data, output = "full"),
"Data columns is mismatch to test GapStrategy.")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.