R/Scratchbook4.R

source("~/Develop/R/rBackTesting/R/BinStrategies.R")
source("~/Develop/R/rBackTesting/R/BuyStrategies.R")
source("~/Develop/R/rBackTesting/R/SellStrategies.R")
source("~/Develop/R/rBackTesting/R/Win.R")
require(rChange)
require(rQuant)
require(tidyverse)
require(dplyr)
require(odbc)
require(lubridate)
'%ni%' <- Negate('%in%')
connection <- DBI::dbConnect(odbc::odbc(), "cryptonoise")
table <- tbl(connection, "bittrex_btc_minutely")

table  %>% collect() -> dataHistorical

rQuant <- init_rQuant()

dataHistorical$time <- dataHistorical$time / 1000

dataHistorical$floor <- floor((dataHistorical$time %/% (5 * 60)) * (5 * 60))

dataHistoricalAll <- dataHistorical %>% filter(type=="all")
dataHistoricalBuy <- dataHistorical %>% filter(type=="BUY")
dataHistoricalSell <- dataHistorical %>% filter(type=="SELL")

dataHistorical <- dataHistoricalAll %>%
  group_by(coin, floor) %>%
  summarize(time = first(time),
            open = first(open),
            close = last(close),
            low = min(low),
            high = max(high))

data <- rQuant$candlesticks$calculate(dataHistorical)

fd <- function(a) {
  return((a[2] - a[1]))
}

asc <- function(a) {
  a<- na.omit(a)
  sum <- sum(a)
  if (sum > 0) {
    return (TRUE)
  } else {
    return (FALSE)
  }
}
desc <- function(a) {
  a<- na.omit(a)
  sum <- sum(a)
  if (sum > 0) {
    return (TRUE)
  } else {
    return (FALSE)
  }
}
mean <- mean(data$open)
data$fd <- rollapply(data$close, width=2, FUN = fd, fill = NA, align = "right")
data$ascSell <- rollapply(data$fd, width=5, FUN = asc, fill = NA, align = "right")
data$ascBuy <- rollapply(data$fd, width=10, FUN = desc, fill = NA, align = "right" )
data %>% mutate(green <- close > open) -> data
#data <- na.omit(data)

windowSize = 12
tradeBookCostRatio = 0
binStrategy <- binStrategies$distributingMeanBinStrategy
buyStrategy <- buyStrategies$cc$hammerBuyStrategy
sellStrategy <- sellStrategies$cc$hammerSellStrategy
numberOfBins = 50
initialInvestment = 0.1


bins <- win(data = data,
            buy = dataHistoricalBuy,
            sell = dataHistoricallSell,
            windowSize = windowSize,
            binStrategy = binStrategy,
            buyStrategy = buyStrategy,
            sellStrategy = sellStrategy,
            tradeBookCostRatio = tradeBookCostRatio,
            numberOfBins = numberOfBins,
            initialInvestment = initialInvestment)
krzysztofpaliga/rBackTesting documentation built on June 27, 2019, 12:21 a.m.