3. 비트코인 선물/3-1. 바이비트 선물 연구일지

(비트코인 자동매매API) (2) 30일 분량의 비트코인 1분봉 받는 시간 비교

봄이오네 2022. 10. 30. 08:17
반응형
목 차
1. 들어가며
2. 사전 준비
1) 30일 분량의 1분봉 데이터는 몇개나 있을까?
2) CSV의 파일 형태로 저장
3. 테스트 결론
1) 지연시간 없음으로 세팅하자.
2) 지연시간을 줄이면, 각각 몇분씩 단축될까?
4. 마치며

1. 들어가며

지난 글에서는 바이비트API를 통해 1분봉 과거데이터를 받아오는 방법을 알아보았다.
실제 1분봉을 받아본다면 느끼겠지만,
생각보다 시간이 많이 걸린다.

키움증권OpenAPI에서 제공하는 1분봉은 900개로 한정된 반면,
바이비트API는 3년 전 데이터도 받아올 수 있다는 장점이 있다.
보유한 데이터를 사용자에게 제공해 준다는 점은 마음에 든다.

이번 글에서는 한달 분량의 1분봉 데이터를 받는데 소요되는 시간을 비교할 것이다.
다른 조건은 동일하고 for문 안에 있는 time.sleep(시간)을 변경하여
테스트를 진행할 예정이다.

→ 알고 싶은 것은 조회수 제한이 없는 상태에서,
for문을 돌리면서 최적의 일시정지 시간(time.sleep)은 몇 초나 될까?


2. 사전 준비

1) 30일 분량의 1분봉 데이터는 몇개나 있을까?

코인은 24시간 거래가 이루어진다.

  • 1분당 1개의 데이터가 생성
  • 1시간에 60개(=1분 x 60분)가 생성
  • 24시간 1,440개(=24시간 x 60분)가 생성
  • 30일이면 약 43,200개의 1분봉이 생성된다.

즉, 4.3만개의 데이터를 받아오는 시간이 얼마나 되는지 생각해보자.
(다만, 4.4만개 이상 존재할 수도 있다. 31일이 있을 수 있다)

2) 저장하는 파일은 CSV의 파일 형태를 대상으로 테스트하였다.

  • 엑셀은 우수한 자료분석 툴의 강점은 있지만, 실행하면 무겁다는 느낌이 든다.
  • CSV는 데이터 저장용으로는 탁월하고 가볍지만, 자료분석에 한계가 있다.

3. 테스트 결론

  • time.sleep()의 지연시간 설정 테스트
그림1. 테스트 후 저장한 파일의 폴더

1) 지연시간 없음으로 세팅하자.

<그림2>에서 확인하였듯이,
지연시간은 6가지의 경우의 수로 가정하였다.
* 6가지는 0.05, 0.04, 0.03, 0.02, 0.01, 설정안함으로 나누어서 테스트함

지연시간(time.sleep)는 설정안해도 프로그램은 조회수 제한에 걸리지 않으며,
아무것도 설정하지 않은 9번 경우(76.8분)는
0.05초로 정한 1번 경우(122.8분)에 비해, 46분을 아낄 수 있다.

※ 추가 내용
①외출할 때 4번을 세팅/실행하고 복귀했다.
22.5.20~7.20. 두달로 세팅되어 있으므로,
한달 설정(2달 결과값 ÷ 2)로 하자.
(가정을 해보면) 22.5.20~6.20까지는 43,920개, 6,798초(=103.3분) 걸렸다고 산술평균함
② 2월은 28일(7번 경우)이므로 모수에서 제외하는 것이 타당하다.

2) 지연시간을 줄이면, 각각 몇분씩 단축될까?

  • (0.05초)122.8분 → (0.04초)113.5분 → (0.03초)103.3분
  • (0.02초)95.3분 → (0.01초)87.9분 → (설정안함) 76.8분

지연시간을 0.01초씩 줄일수록, 10분 정도씩 줄어든다!
→ 합리적인 "지연시간"은 "설정안함"으로 하는 것이 좋아보인다!

그림2. 바이비트API 데이터를 받아올 때 time.sleep를 몇으로 설정하는지 비교하여 소요시간을 알아내는 테스트 결과

4. 마치며

time.sleep를 활용하여 테스트를 진행해보았다.

엑셀은 상당히 무겁다는 생각이 든다.
데이터 저장을 위해 엑셀을 열어야 하는데,
용량이 큰 엑셀 파일을 열 때, 시간이 많이 걸리는 건 경험해 보았을 것이다.
데이터 저장용으로 엑셀은 적당하지 않는거 같다.

sleep.time()의 지연시간 설정 관련이다.
지연시간을 0.01로 줄였을 때도 시간이 상당히 절약된다.

이번 실험으로 알게된 건,

  • 데이터를 받아올 때는 엑셀이 아닌 CSV 확장자를 이용하고,
  • 지연시간은 "없음"으로 설정하자.

테스트를 진행하기 위해 상당한 시간을 보냈다.
한달 분량(4.4만개)을 받기 위해서는 90분~120분 정도를 기다려야 한다.
그래도 최적의 지연시간은 알았으니,
다음에 1분봉 받을 때 CSV파일, 지연시간은 없음으로 설정해야겠다.

반응형