본문 바로가기
트레이딩

SQLite . 과거 캔들 저장 데이터 베이스 만들기

by i.got.it 2024. 9. 1.

 

 

 

 

개요 

- 캔들 과거 데이터를 저장하기 위한 Data Base 테이블 설계 

- 사용되는 Data Base : SQLite 무료이면서도 안정성 증명됨. 

- 저장대상 캔들 종목 예 :  암호화폐 거래소 바이비트의 리니어 선물 BTCUSDT, 인버스 선물 BTCUSD, 현물 BTCUSDT

- 본 내용에서 다루 DB 설계 방식은 예 에서의 종목 외에도 모든 종목들에 적용 가능. 

 

 

사전 준비 

- SQLite 매니징 도구인 DB Browser for SQLite  설치되어 있어야 함. 

 - - 설치방법 상세 : https://igotit.tistory.com/5806 

 

 

DB 구현 규칙  

- DB 파일명 규칙, 테이블 이름 규칙, 테이블의 필드명과 자료형 규칙이 명확해야 이후 혼선없는 활용 가능하다. 

 

 

DB 파일 이름 규칙 

- 파일명만 보고 거래소, 종목 , 데이터 종류(캔들) 알 수 있게 하고 확장자를 보고 이 파일이 SQLite 데이터베이스 파일임을 식별 가능하게 한다. 

 

규칙 적용예.

CyMD_Candle_bybit_linear_BTCUSDT.sqlite . 바이비트의 리니어 BTCUSDT 의 캔들 데이터 SQLite DB 파일 . 

CyMD_Candle_bybit_inverse_BTCUSDT.sqlite . 바이비트의 인버스 BTCUSD 의 캔들 데이터인 SQLite DB 파일 . 

CyMD_Candle_bybit_spot_BTCUSDT.sqlite . 바이비트의 현물 BTCUSDT의 캔들 데이터인 SQLite DB 파일 . 

 

DB 테이블 이름 규칙 

- 1개의 DB 파일내에 캔들의 시간 주기에 1:1 대응하는 테이블이 만들어진다. 테이블명을 보고 1분봉인지,1시간봉인지 식별 가능하게 한다. 

- DB 파일명에 이미 식별용으로 기록된  항목들(Candle, 거래소 이름, 종목명등) 은 테이블 이름에 표기 하지 않는다. 

 

규칙적용예.

T_M1 : 1분봉  데이터 저장 테이블. 

T_H1 : 1시간 봉 데이터 저장 테이블. 

T_D1 : 1일봉 데이터 저장 테이블. 

 

 

 

 

테이블 필드명(=컬럼명), 자료형 규칙 

 

필드명 SQLite 자료형 설명 
timestamp_s INTEGER
필드명에 단위 필수 표현. 캔들 데이터에서는 timestamp_s 만 사용. 
_s :  초, _ms : 밀리초, _us : 마이크로 초, _ns : 나노초. 

UTC epoch 정수형으로 시가 시점의 시각.  
open TEXT 시가
high TEXT 고가
low TEXT 저가
close TEXT 종가
volume_base TEXT 통상적인 거래량 의미함.
리니어 BTCUSDT 이면 BTC 단위의 거래량.
메타트레이더 에서는 real volume 이라고 함. 
선물 종목 중에는 계약수 단위로 거래량 제공되는 경우도 있으며 이런 경우에는 계약수x1계약당 실제 거래량을 곱하여 volume_base 값 기록.   
volume_quote TEXT 통상적으로 (turnover)거래대금 이라고 함.
리니어  BTCUSDT 이면 USDT 단위의 거래량.  
volume_tick INTEGER 메타트레이더 에서 거래 빈도(거래건수이며 거래량 정보 아님)로 제공되는것. 

 

 

가격 저장 용도로 문자열인 TEXT 자료형 사용 이유 : 가격의 소수점 이하 자리수 확정적으로 표현하기 위함. 실수형 변수로 하면 자리수가 확정적이지 않음. 추가 상세 정보 : SQLite 의 자료형  

 

 

거래량 저장 용도로 TEXT 자료형 사용 이유 : 종목마다 다른 자료형 ( 정수인 경우도 있고 실수인 경우도 있다 )으로 제공될 수 있기 때문에 내 DB 에서는 자료형이 뭐든 다 기록가능하게 할려고 함.  

 

 

Volume 관련 정보 형식은 글로벌 표준 정착 안됨.

 

바이비트 API 의 캔들 데이터  는 volume_base, volume_quote 모두 제공됨. 굿.

 

메타트레이더에서는 volume_tick 은 항상 제공되지만 volume_base 는 real volume 이라는 이름으로 제공하는 경우도 있고 아닌 경우도 있다. 브로커 , 종목마다 다름. 

 

캔들 데이터의 volume_base, volume_quote( turnover ) , volume_tick 은 해당 정보 제공되는 경우에만 필드 생성한다. 

 

 

 

최종 만들어진 SQLite 데이터 베이스  

- 상기 규칙에 맞게 SQLite 데이터 만들기 결과 

 

아래 파일들이 SQLite DB 파일, 

 

 

이 파일을 DB Browser for SQLite  에서 열어보면 테이블들이 3개( T_M1, T_M15, T_H1   ) 만들어져 있고, 각 테이블 내의 필드명과 자료형은 모두 동일하다.    

 

 

 

 

 

DB Browser for SQLite  에서  DB 만들기 과정 상세 영상. 

 

DB Browser for SQLite  이용하여 SQLite DB 만들기 전체 영상.  

 

 

 

 

 

데이터베이스에 실 데이터 기록 예 

 

암호화폐 거래소 바이비트의 종목 의  과거 캔들 데이터 수집 SQLite DB 기록 파이썬 코드. https://igotit.tistory.com/5810 

 

암호화폐 과거 캔들 데이터 DB 에 저장하기 . 파이썬 코드

개요  바이비트 거래 종목의 과거 캔들 데이터 확보하여 DB 에 저장하는 파이썬 코드 작성 상세.   사전필수  이전 파이썬에서 구현 완료했던 바이빗 거래소로 정보 요청하여 확보된 과거 캔

igotit.tistory.com

 

 

 

 

 

 


첫 등록 : 2024.09.01

최종 수정 : 

단축 주소 : https://igotit.tistory.com/5809


 

 

 

 

 

 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5