[트레이딩] R로 업비트 데이터 분석하기
업비트는 대한민국에서 가장 큰 암호화폐 거래소 중 하나이며, REST API와 WebSocket API를 제공하여 실시간 데이터 및 과거 데이터를 조회할 수 있습니다. 이번 글에서는 R 언어를 활용하여 업비트 데이터를 가져오고 분석하는 방법을 소개하겠습니다.
1. 업비트 API 개요
업비트는 두 가지 주요 API를 제공합니다.
- REST API: 과거 시세, 현재가, 주문 내역 등을 조회할 수 있음
- WebSocket API: 실시간 시세 데이터를 스트리밍 방식으로 제공
R에서는 httr
패키지를 사용하여 REST API를 호출하고, websocket
패키지를 활용하면 WebSocket을 사용할 수 있습니다. 이번 글에서는 REST API를 중심으로 분석을 진행하겠습니다.
2. R 환경 설정
필요한 패키지를 설치하고 로드합니다.
install.packages("httr")
install.packages("jsonlite")
install.packages("tidyverse")
library(httr)
library(jsonlite)
library(tidyverse)
3. 업비트 REST API를 활용한 데이터 가져오기
3.1 현재가 조회
업비트에서 특정 코인의 현재가를 가져오는 방법은 다음과 같습니다.
url <- "https://api.upbit.com/v1/ticker"
query <- list(market = "KRW-BTC")
response <- GET(url, query = query)
data <- fromJSON(content(response, "text"))
if (is.na(data)) {
stop("데이터를 가져오는 데 실패했습니다.")
}
glimpse(data)
이 코드를 실행하면 BTC/KRW(비트코인 원화)의 현재 가격과 거래량 정보를 확인할 수 있습니다.
3.2 과거 시세 조회 (캔들 데이터)
업비트는 다양한 주기의 캔들 데이터를 제공합니다. (1분, 3분, 5분, 10분, 1시간, 일봉 등)
아래 코드는 1시간(60분) 봉 데이터를 가져오는 예제입니다.
url <- "https://api.upbit.com/v1/candles/minutes/60"
query <- list(market = "KRW-BTC", count = 100)
response <- GET(url, query = query)
data <- fromJSON(content(response, "text"))
if (is.na(data)) {
stop("캔들 데이터를 가져오는 데 실패했습니다.")
}
glimpse(data)
이렇게 하면 최근 100개의 1시간 봉 데이터를 불러올 수 있습니다.
4. 데이터 분석 및 시각화
4.1 캔들 데이터 정리
data_clean <- data %>%
mutate(
date = ifelse(is.na(trade_date_kst) | is.na(trade_time_kst), NA, paste(trade_date_kst, trade_time_kst)),
date = as.POSIXct(date, format="%Y-%m-%d %H:%M:%S")
) %>%
select(date, opening_price, high_price, low_price, trade_price, trade_volume) %>%
rename(open = opening_price, high = high_price, low = low_price, close = trade_price, volume = trade_volume)
4.2 시각화 (캔들 차트)
ggplot(data_clean, aes(x = date, y = close)) +
geom_line(color = "blue") +
labs(title = "비트코인 1시간 봉 가격 변화", x = "날짜", y = "종가") +
theme_minimal()
5. 거래량 분석
업비트에서 제공하는 데이터를 활용하면 거래량 패턴도 분석할 수 있습니다.
ggplot(data_clean, aes(x = date, y = volume)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "비트코인 거래량 변화", x = "날짜", y = "거래량") +
theme_minimal()
이렇게 하면 특정 기간 동안의 거래량 변화를 시각적으로 확인할 수 있습니다.
6. 마무리
이번 글에서는 R을 활용하여 업비트 REST API를 통해 데이터를 가져오고 분석하는 방법을 살펴보았습니다.
httr
을 활용하여 API 호출- 과거 시세 데이터를 가져와
tidyverse
로 정리 ggplot2
로 시각화
앞으로도 다양한 분석 기법과 함께 실전 적용 방법을 소개할 예정이니 기대해 주세요! 😊
댓글
댓글 쓰기