Это продолжение вопроса здесь .Спасибо @nate за полезное решение.
Я пытаюсь собрать данные о ценах на базе.На данный момент у меня есть следующее:
start <- strftime(Sys.time() - 86400, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
end <- strftime(Sys.time(), "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
product_id = "ETH-EUR"
granularity = 300
# request url
req.url <- paste0("https://api.pro.coinbase.com/products/", product_id, "/candles")
req.url
# fetching the data ourselves - the return
res <- httr::GET(url = req.url,
query = list(start = start, end = end,
granularity = granularity))
res <- as.data.frame(t(matrix(unlist(httr::content(res)), nrow = 6)))
res[['V1']] <- as.POSIXct(.subset2(res,1L), origin="1970-01-01")
c(min(res$V1),max(res$V1))
colnames(res) <- c("time", "low", "high", "open", "close", "volume")
Что дает следующее:
> c(min(res$V1),max(res$V1))
[1] "2019-01-23 13:45:00 CET" "2019-01-24 13:40:00 CET"
(данные за последние 24 часа)
Если я изменюсьstart
и end
раз к следующему:
start <- strftime(Sys.time() - 86400*5, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
end <- strftime(Sys.time(), "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
(Соберите данные за последние 5 дней) - база данных не позволяет собирать столько данных.
Однако можно собрать:
t = 5 and t = 4
t= 4 and t = 3
t = 3 and t = 2
t = 2 and t = 1
t = 1 and t = 0
Итак, соберите данные 5 дней назад и вычтите 24 часа из этой даты.Что-то вроде следующего:
start <- strftime(Sys.time() - 86400*5, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
end <- strftime(Sys.time() - 86400*(5-1), "%Y-%m-%dT%H:%M:%SZ", tz = "UTC")
, который работает.Поэтому, зная это, я пытаюсь создать функцию, которая будет «перебирать» итерации по датам и извлекать информацию.
Я работал над следующим - но я знаю, что функция будет в 100 раз лучшечем то, что у меня есть в настоящее время:
start <- NULL
end <- NULL
for(i in 1:5){
start[[i]] <- as.data.frame(strftime(Sys.time() - 86400*i, "%Y-%m-%dT%H:%M:%SZ", tz = "UTC"))
end[[i]] <- as.data.frame(strftime(Sys.time() - 86400*(i-1), "%Y-%m-%dT%H:%M:%SZ", tz = "UTC"))
}
start <- do.call(rbind.data.frame, start)
end <- do.call(rbind.data.frame, end)
colnames(start) <- "start"
colnames(end) <- "end"
for(i in 1:5){
res[[i]] <- httr::GET(url = req.url,
query = list(start = start[i, ], end = end[i, ],
granularity = 300))
}
Есть ли у вас какие-либо советы о том, как применить это к функции?