R/catalogs.R

Defines functions .counting.results .candles.worst.good .candle.by.candle .good.and.bad .join.event.candle .convert.timestamp .candle.status .counting.results catalogs

Documented in catalogs

#' @title catalogs
#' @description his function calculates the chance of winning on a specific
#' currency pair of interest after the result appears in the website investing.
#' @param coin is a string for the country of interest
#' @param candles is a dataframe from iq option
#' @param tabela is a dataframe with 3 columns (datetime, result, timestamp)
#' @importFrom dplyr group_by summarise mutate select arrange n inner_join case_when
#' @importFrom lubridate as_datetime with_tz date
#' @importFrom stringr str_locate
#' @import magrittr
#' @export
#'

catalogs <- function(coin, candles, tabela){
   candles$Data <- .convert.timestamp(candles$from)
   candles <- select(candles,Data,Pair,open,close,min,max,volume)
   tables <- .good.and.bad(.join.event.candle(candles,tabela))
   semi <- .candles.worst.good(.candle.by.candle(tables, candles = candles), coin)
   return(.counting.results(semi))
}



.counting.results <- function(resultado){
  contagem <- resultado %>%
    group_by(Pair) %>%
    summarise(M1 = sum(ifelse(M1 == Resultado, TRUE, FALSE)),
                     M2 = sum(ifelse(M2 == Resultado, TRUE, FALSE)),
                     M3 = sum(ifelse(M3 == Resultado, TRUE, FALSE)),
                     M4 = sum(ifelse(M4 == Resultado, TRUE, FALSE)),
                     M5 = sum(ifelse(M5 == Resultado, TRUE, FALSE)),
                     n = dplyr::n()) %>%
    mutate(M1 = paste(as.character(M1),"X" ,as.character(n - M1), sep = " "),
                  M2 = paste(as.character(M2),"X" ,as.character(n - M2), sep = " "),
                  M3 = paste(as.character(M3),"X" ,as.character(n - M3), sep = " "),
                  M4 = paste(as.character(M4),"X" ,as.character(n - M4), sep = " "),
                  M5 = paste(as.character(M5),"X" ,as.character(n - M5), sep = " "))
  return(contagem[,-7])
}
.candle.status <- function(x1,x2){
  return(ifelse((x2 - x1) > 0, "CALL", ifelse((x2 - x1) < 0, "PUT", "DOJI" ) ))
}

.convert.timestamp <- function(x){
  return(with_tz(as_datetime(x, tz = "GMT"), tz = "America/Sao_Paulo"))

}

.join.event.candle <- function(candles, tabela){
  return(inner_join(candles, tabela, by = "Data"))
}

.good.and.bad <- function(jointable){
  jointable$candle5 <- ifelse((jointable$close - jointable$open) > 0, "CALL",
                             ifelse((jointable$close - jointable$open) < 0, "PUT", "DOJI"))
  condition1 <- jointable$Evento == "CALL" & jointable$candle5 == "CALL"
  condition2 <- jointable$Evento == "CALL" & jointable$candle5 == "PUT"
  jointable$worst <- ifelse( condition1 | condition2, jointable$max,jointable$min)
  jointable$Data <- date(jointable$Data)
  return(select(jointable, Data, Pair, close, Evento, candle5, worst))
}

.candle.by.candle <- function(table, candles){
tab <-  table %>%
    inner_join(summarise(group_by(candles, Pair, Data=date(Data)),
                                              close_M1 = close[12],
                                              close_M2 = close[24],
                                              close_M3 = close[36],
                                              close_M4 = close[48],
                                              close_M5 = close[60]), by = c("Pair","Data") )  %>%
  arrange(desc(Data), Pair)
  return(tab)
}


.candles.worst.good <- function(datacandle, coin){
  tablecandles <- datacandle %>%
  mutate(M1 = .candle.status(close,close_M1),
                M2 = .candle.status(close,close_M2),
                M3 = .candle.status(close,close_M3),
                M4 = .candle.status(close,close_M4),
                M5 = .candle.status(close,close_M5),
                W1 = .candle.status(worst,close_M1),
                W2 = .candle.status(worst,close_M2),
                W3 = .candle.status(worst,close_M3),
                W4 = .candle.status(worst,close_M4),
                W5 = .candle.status(worst,close_M5),
         )
  tablecandles$start <- str_locate(tablecandles$Pair,coin)[,1]
  tablecandles$Base <- ifelse(tablecandles$start ==4 ,TRUE,FALSE)
  tablecandles <- tablecandles %>%
    mutate(Resultado = case_when(Base == TRUE & Evento == "PUT" ~ "CALL",
                                 Base == TRUE & Evento == "CALL" ~ "PUT",
                                 Base == FALSE & Evento == "CALL" ~ "CALL",
                                 Base == FALSE & Evento == "PUT" ~ "PUT")) %>%
    select(Pair,Data,M1,M2,M3,M4,M5,W1, W2, W3, W4, W5,Resultado)
  return(tablecandles)

}

.counting.results <- function(resultado){
contagem <- resultado %>%
            group_by(Pair) %>%
            summarise(M1 = sum(ifelse(M1 == Resultado, TRUE, FALSE)),
                      M2 = sum(ifelse(M2 == Resultado, TRUE, FALSE)),
                      M3 = sum(ifelse(M3 == Resultado, TRUE, FALSE)),
                      M4 = sum(ifelse(M4 == Resultado, TRUE, FALSE)),
                      M5 = sum(ifelse(M5 == Resultado, TRUE, FALSE)),
                      W1 = sum(ifelse(W1 == Resultado, TRUE, FALSE)),
                      W2 = sum(ifelse(W2 == Resultado, TRUE, FALSE)),
                      W3 = sum(ifelse(W3 == Resultado, TRUE, FALSE)),
                      W4 = sum(ifelse(W4 == Resultado, TRUE, FALSE)),
                      W5 = sum(ifelse(W5 == Resultado, TRUE, FALSE)),
                      n = dplyr::n()) %>%
    mutate(M1 = paste(as.character(M1),"X" ,as.character(n - M1), sep = " "),
           M2 = paste(as.character(M2),"X" ,as.character(n - M2), sep = " "),
           M3 = paste(as.character(M3),"X" ,as.character(n - M3), sep = " "),
           M4 = paste(as.character(M4),"X" ,as.character(n - M4), sep = " "),
           M5 = paste(as.character(M5),"X" ,as.character(n - M5), sep = " "),
           W1 = paste(as.character(W1),"X" ,as.character(n - W1), sep = " "),
           W2 = paste(as.character(W2),"X" ,as.character(n - W2), sep = " "),
           W3 = paste(as.character(W3),"X" ,as.character(n - W3), sep = " "),
           W4 = paste(as.character(W4),"X" ,as.character(n - W4), sep = " "),
           W5 = paste(as.character(W5),"X" ,as.character(n - W5), sep = " "))
  contagem <- select(contagem, -n)
  list.counting <- list()
  list.counting[[1]] <- select(contagem, Pair, M1, M2, M3, M4, M5)
  list.counting[[2]] <- select(contagem, Pair, W1, W2, W3, W4, W5)
  return(list.counting)
}
professor-trade-br/catalogacao documentation built on June 15, 2020, 12:40 a.m.