본문 바로가기
트레이딩

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

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

 

 

 

 

개요  

바이비트 거래 종목의 과거 캔들 데이터 확보하여 DB 에 저장하는 파이썬 코드 작성 상세. 

 

 

사전필수 

 

이전 파이썬에서 구현 완료했던 바이빗 거래소로 정보 요청하여 확보된 과거 캔들 데이터를 csv 파일로 저장하는 코드 (상세보기 : https://igotit.tistory.com/5766  )에서 파일 저장하는 기능 대신 DB 로 저장하는 부분 구현한다.

이전 작성 글에서는 바이비트 거래소 api 에 접근하는 기초적인 부분부터 단계적으로 구현 진행하는 스텝 바이 스텝 방식으로 설명되었기에 본 글에서 이 부분 설명 생략하고 바로 완전하게 작동하는 결론적인 코드 정리해둔다. 

 

 

본 예에서 사용되는 SQLite DB 스키마는 https://igotit.tistory.com/5809  에서 정의된 것과 동일하게 한다. 

 

 

DB 저장 파이썬 코드 1. 

 

아래 코드는 이전 작성한 https://igotit.tistory.com/5766  의 코드 5 에서의 CSV 파일로 저장하는 기능을 제거하고 SQLite DB 로 저장하는 완전한 코드. 

 

DB 파일명은 바이빗 거래소의 category , symbol 정보로 자동 생성된다. 

예 : CyMD_Candle_bybit_linear_BTCUSDT.sqlite 

 

DB 내의 테이블명은 interval 에 기록한 내용에 준하여 이름 자동 생성되고  (예 : 1분봉이면 T_M1), 해당테이블이 없는 경우 자동 생성하고 데이터 기록한다. 

예 : T_M1

 

이미 테이블에 기록된 timestamp_s 가 있는 경우에는 기록처리 하지 않는다. 

 

 

위 코드 실행하면 DB 테이블에 완전하게 저장 되고, DB4S 에서 파일 오픈하여 Browse Data 에서 기록된 데이터들 확인 가능하다.  

bybit spot 1분봉 SQLite DB 에 저장

 

 

 

 

코드 2. 캔들 데이터 누락 구간 점검하여 출력하기  추가. 

기능 추가 1. 상기 코드 1에  테이블에 저장된 캔들 데이터의 첫시각과 마지막 시각 사이에 누락된 캔들이 있는 경우 해당 구간 출력하는 기능 추가.

 

기능 추가2. 테이블에 기록된 첫 시각과 마지막 시각 출력 기능 추가. 

 

 

 

코드 2. 실행결과 누락 데이터 있는 경우  출력 예. 

- 본 코드 실행 마지막 시점에, 테이블 기록된 내용 점검하여 누락된 캔들이 있는 경우 해당 시구간을 보여준다. 

 

 

상기 누락된 구간이 포함되도록 시간 설정부를 수정하여 다시 실행시키면 해당 구간 데이터 확보하여 DB 에 기록한다. 

 

  # 시간 범위 설정. 위 출력의 누락된 시구간이 포함되도록 여유있게 설정한다. 
    utc_datetime_start_str = "2024.07.14_00.00.00"
    utc_datetime_end_str = "2024.08.01_00.00.00"

 

위 설정으로 먼저 실행시키고 나서, 2번째 누락 구간 포함하는 시간 설정하여 실행시킨다. 

  # 시간 범위 설정
    utc_datetime_start_str = "2024.08.19_00.00.00"
    utc_datetime_end_str = "2024.08.25_00.00.00"

 

 

 

위와 같은 방식으로 DB 저장 처리하면 누락된 데이터 없는 무결성 고신뢰 데이터 품질  달성 된다. 

 

반면, csv 파일 저장 방식에서는 이와 같은 처리가 쉽지 않기 때문에 DB 활용은 필수다. 

 

 

코드2. 테이블에 기록된 첫캔들의 시각과 마지막 시각 출력 모습. 

 

 

 

 

 

DB 파일 크기  확인 해봄 

이 코드로 바이비트 거래소  리니어 USDT   종목의  2022년1월1일부터 2024년 8월 20일 까지(총 2년 8개월) 1분봉, 15분봉, 1시간봉 모두 저장하면 DB 파일 용량 175Mbyte 정도 됨. 

 

 

 

 

주의 . 서버에 데이터 없는 경우도 있음. 

바이비트 거래소의 현물 BTCUSDT 의 2021년 8월 1일 부터 2024년 8월 1일 구간까지  1분봉, 1시간봉은 모두 캔들데이터 확보가능하나, 15분봉의 경우 아래 2개  시 구간이 누락되어있고, 이 시 구간은 서버에 재요청해도 데이터 제공 안해줌. 

 

Missing interval: 2021-12-31 00:15:00 to 2021-12-31 23:45:00
Missing interval: 2022-02-01 02:45:00 to 2022-02-05 06:30:00
First recorded time: 2021-08-01 00:00:00
Last recorded time: 2024-08-01 00:00:00

 

 

 

 

연관 

 

CSV 파일로 저장하는 파이썬 코드 작성 과정 단계별 상세 설명

 

암호화폐 캔들 데이터 확보 코드 . 파이썬 pybit

바이비트 암호화폐 캔들 데이터 처리 코드 . 파이썬 pybit 이용.   개요 암호화폐 거래소 바이비트 API 통신 위한 공식 파이썬 패키지 pybit 이용하여 파이썬에서  캔들 데이터 확보하기 위한 가

igotit.tistory.com

 

 


첫 등록 : 2024.09.01

최종 수정 : 

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


 

댓글



 

비트코인




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