#' @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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.