R/getWikiRS.R

Defines functions getWikiRS

Documented in getWikiRS

#' Start Remote RSelenium Server
#'
#' @param ...
#'
#' @import RSelenium
#' @return Remote RSelenium Server Environment
#' @export
#'
#' @examples startRS()
startRS <- function (...) {

    #start remote server
    rD <- rsDriver(browser = "chrome")
    remDr <- rD$client

    #can be added later to verify is login still active
    #remDr$getCurrentUrl()
    #XML::htmlParse(remDr$getPageSource()[[1]])

    #login to page
    login_url <- "https://www.wikifolio.com/dynamic/de/de/login/login?ReturnUrl=/de/"
    remDr$navigate(login_url)
    login_user <- remDr$findElement(using = 'css selector', "#Username.textbox")
    login_user$sendKeysToElement(list("bin1234567890@web.de"))
    login_pw <- remDr$findElement(using = 'css selector', "#Password.textbox")
    login_pw$sendKeysToElement(list("getin88"))
    login_button <- remDr$findElement(using = 'css selector', "button.c-button.c-button--large.c-button--block.c-button--uppercase.c-button--bold")
    login_button$clickElement()

    remDr

}
#' Download Historical Price Data From Wikifolio with RSelenium
#'
#' @param wiki_symbol wikifolio symbol
#' @param acc_statement if TRUE will download account statement; default FALSE
#'
#' @return returns an xts object containing historical price data of the wikifolio
#' @import zoo
#' @import xts
#' @importFrom lubridate dmy_hms
#' @export
#'
#' @examples getWikiRS("WF0AAABEST")
getWikiRS <- function(wiki_symbol, acc_statement = FALSE) {

  yesterday <- paste0(
    strsplit(as.character(Sys.Date() - 1), "-")[[1]][3], ".",
    strsplit(as.character(Sys.Date() - 1), "-")[[1]][2], ".",
    strsplit(as.character(Sys.Date() - 1), "-")[[1]][1]
  )

  if (isTRUE(acc_statement)) {
    wiki_url <- paste0(
      "https://www.wikifolio.com/dynamic/de/de/invest/download?type=account-statement&name=",
      wiki_symbol, "&dateFrom=01.01.2010&dateTo=", yesterday
    )}

  wiki_url <- paste0(
    "https://www.wikifolio.com/dynamic/de/de/invest/download?type=daily&name=",
    wiki_symbol, "&dateFrom=01.01.2010&dateTo=", yesterday
  )


  remDr$navigate(wiki_url)
  Sys.sleep(18)

  #feind file in dowload folder
  file_n <- list.files("/Users/home/Downloads") %>%
    grep(., pattern=wiki_symbol, perl = FALSE) %>%
    tail(., 1)
  file_tmp <- paste0("/Users/home/Downloads/",
                     list.files("/Users/home/Downloads")[file_n])

  wiki_historic <- read.csv2(file_tmp,
                             fileEncoding = c("UCS-4-INTERNAL"),
                             skip = 5,
                             sep = ";",
                             col.names = c("Date", "Interval", "Open", "Close", "High", "Low"),
                             allowEscapes = TRUE
  )
  if (file.exists(file_tmp)) file.remove(file_tmp)

  #remDr$close()
  #rm(rD)
  #gc()

  wiki_historic$Date <- as.Date(as.POSIXct(
    lubridate::dmy_hms(wiki_historic$Date, tz = "UTC")
  ), tz = "UTC")
  wiki_historic <- wiki_historic[, -2]
  wiki_historic <- wiki_historic[, c("Date", "Open", "High", "Low", "Close")]
  wiki_historic <- as.xts(wiki_historic[, -1], order.by = wiki_historic[, 1])
  wiki_historic <- wiki_historic[!(weekdays(index(wiki_historic)) %in%
                                     c("Saturday", "Sunday")), ]

  return(wiki_historic)
}
rengelke/quantTraiding_trato documentation built on Oct. 13, 2020, 12:01 p.m.