글쓰는 개발자

[업비트/차트데이터수집] 1단계 데이터베이스 설계 본문

IT 서비스 제작과정/개발

[업비트/차트데이터수집] 1단계 데이터베이스 설계

세가사 2024. 4. 14. 01:12
반응형

 

 

[업비트] 코인캔들 차트데이터 수집

지난 데이터를 분석하기 위해서 자주 보는 것이 캔들차트다. 투자시기 찾는 많은 방법중 하나가 보조지표를 활용한 과거데이터 검증이다. 하지만 사람이 일일이 모든 과거데이터를 확인해 보기

gran007.tistory.com

 

캔들차트 분석을 위한 차트데이터 수집을 진행해보자. 

 

Docker에 설치된 MySQL에 연결해 DB 테이블을 설계하고 생성하는 작업을 먼저 진행해야 한다.

 

두 종류의 테이블을 설계할 예정이다.

 

1. 코인 종류 테이블: KRW로 시작하는 원화 관련 코인 타입의 키값을 가지는 테이블

2. 캔들차트 데이터 테이블: 실제 캔들데이터가 모두 저장되는 테이블

 

분봉 캔들, 일봉 캔들, 주봉 캔들, 월봉 캔들로 나뉘어 진다.

 

먼저 분봉 캔들과 일봉 캔들 먼저 생성해서 사용하고 필요시 주캔들 월캔들은 추가하는 방향으로 간다.

 

1. 코인 종류 테이블 (MARKET)

필드명 타입 설명
id varchar(15) Primary Key 코인 인식코드  (PK)
korean_name varchar(50) Not Null 한글명
english_name varchar(50) Not Null 영문명
create table market
(
    id           varchar(15) not null comment '코인 인식코드',
    korean_name  varchar(50) not null comment '한글명',
    english_name varchar(50) not null comment '영문명',
    constraint market_pk
        primary key (id)
);

2. 분봉 캔들차트 테이블(CANDLE_MINUTE)

필드명 타입 설명
id int unsigned autoincrement Primary Key 아이디
market_id varchar(15) Not Null 마켓 아이디
candle_date_time_utc DateTime Not Null 캔들 기준 시각(UTC 기준)
candle_date_time_kst DateTime Not Null 캔들 기준 시각(KST 기준)
opening_price Double Not Null 시가
high_price Double Not Null 고가
low_price Double Not Null 저가
trade_price Double Not Null 종가
timestamp Long Not Null 해당 캔들에서 마지막 틱이 저장된 시각
candle_acc_trade_price Double Not Null 누적 거래 금액
candle_acc_trade_volume Double Not Null 누적 거래량
unit tinyint Not Null 분 단위(유닛)
create table candle_minute
(
    id                      int unsigned auto_increment comment '아이디',
    market_id               varchar(15) not null comment '마켓 아이디',
    candle_date_time_utc3   datetime    not null comment '캔들 기준 시각(UTC 기준)',
    candle_date_time_kst    datetime    not null comment '캔들 기준 시각(KST 기준)',
    opening_price           double      not null comment '시가',
    high_price              double      not null comment '고가',
    low_price               double      not null comment '저가',
    trade_price             double      not null comment '종가',
    timestamp               long        not null comment '해당 캔들에서 마지막 틱이 저장된 시각',
    candle_acc_trade_price  double      not null comment '누적 거래 금액',
    candle_acc_trade_volume double      not null comment '누적 거래량',
    unit                    tinyint     not null comment '분 단위(유닛)',
    constraint candle_minute_pk
        primary key (id)
);

3. 일봉 캔들차트 테이블(CANDLE_DAY)

필드명 타입 설명
id int unsigned autoincrement Primary Key 아이디
market_id varchar(15) Not Null 마켓 아이디
candle_date_time_utc DateTime Not Null 캔들 기준 시각(UTC 기준)
candle_date_time_kst DateTime Not Null 캔들 기준 시각(KST 기준)
opening_price Double Not Null 시가
high_price Double Not Null 고가
low_price Double Not Null 저가
trade_price Double Not Null 종가
timestamp Long Not Null 해당 캔들에서 마지막 틱이 저장된 시각
candle_acc_trade_price Double Not Null 누적 거래 금액
candle_acc_trade_volume Double Not Null 누적 거래량
prev_closing_price Double Not Null 전일 종가(UTC 0시 기준)
change_price Double Not Null 전일 종가 대비 변화 금액
change_rate Double Not Null 전일 종가 대비 변화량
create table candle_day
(
    id                      int unsigned auto_increment comment '아이디',
    market_id               varchar(15) not null comment '마켓 아이디',
    candle_date_time_utc3   datetime    not null comment '캔들 기준 시각(UTC 기준)',
    candle_date_time_kst    datetime    not null comment '캔들 기준 시각(KST 기준)',
    opening_price           double      not null comment '시가',
    high_price              double      not null comment '고가',
    low_price               double      not null comment '저가',
    trade_price             double      not null comment '종가',
    timestamp               long        not null comment '해당 캔들에서 마지막 틱이 저장된 시각',
    candle_acc_trade_price  double      not null comment '누적 거래 금액',
    candle_acc_trade_volume double      not null comment '누적 거래량',
    prev_closing_price 		double      not null comment '전일 종가(UTC 0시 기준)',
    change_price 			double      not null comment '전일 종가 대비 변화 금액',
    change_rate 			double      not null comment '전일 종가 대비 변화량',
    constraint candle_day_pk
        primary key (id)
);

 

이렇게 테이블을 설계해두었다. 먼저 마켓 코드 정보를 기반으로 market 테이블에 데이터를 채우고 분봉 데이터 일봉 데이터를 불러내서 테이블에 데이터를 넣는 프로그램을 만들 예정이다.

반응형