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

(비트코인 자동매매API) (3) 비트코인 최신 데이터(현재가) 받기

봄이오네 2022. 11. 1. 08:12
반응형
목 차
1. 들어가며
2. 사전설명
3. 코드설명
4. 전체코드 및 결과
5. 마치며

1. 들어가며

지난 글에서는 바이비트API를 통해
비트코인(선물)의 과거 1분봉 데이터 받는 방법을 알아보았다.
실제 코드를 돌려보면 알겠지만, 과거 1분봉 데이터 받는 것에도
상당한 시간(1달 분량, 80분)이 걸리니,
필요한 기간의 1분봉 데이터만 받도록 하자.

이번 글에서는 바이비트API를 통해
실시간 비트코인의 현재가 받는 방법을 알아볼 것이다.
→ 여기서는 현재가를 1회만 조회하는 코드만 설명할 예정이다.

시간마다 반복(threading.Timer)하여 현재가를 받는 내용(갱신)은
향후 설명할 예정이다.

※ 참고로, 바이비트의 API 키 및 Secret는 별도로 필요없다.

(비트코인 자동매매API) (1) 비트코인 과거 1분봉 데이터 한번에 받기

목 차 1. 들어가며 2. 사전준비 ① 설명경로 ② HTTP Request ③ 입력 인자 (필수 3개, 선택 1개) ④ 받아오는 변수 (9개) ⑤ 바이비트API에 요청/수신받는 데이터형태 3. 코드 설명 4. 전체코드 및 결과 5.

springcoming.tistory.com


<그림1>은 비트코인(선물)의 현재가를 보여준다.

그림1. 2022-10-29 14:44분의 현재가(20,680.50)를 확인할 수 있다.

2. 사전설명

이번에도 바이비트API 설명자료를 먼저 확인해 보자.
지난 번에도 말했듯이 원문을 보는게 좋을 것 같아, 영문으로 준비했다.

그림2. 바이비트API에서 최신정보를 받는 방법


설정경로 : Market Data Endpoints > Latest Information for Symbol
Request Parameters(입력내용) : 문자형으로 코인명만 입력하면 된다.
Response Parameters(수신 데이터) : symbol(코인명), last_price(현재가)를 받아온다.
Request Example (입력 예시) : endpoint를 통해 api홈페이지 접속 및 ②번의 코인명 입력
Response Example(수신 데이터 예시) : 받아오는 데이터 형태를 보여준다.
※ 우리에게 필요한 데이터는 result안의 여러가지 데이터(코인명, 현재가 등)이다.


3. 코드설명

필요한 모듈은 설치가 필요한 pybit내장모듈인 datetime 2개이다.

그림3. 현재가를 받아오는 코드


1줄~2줄 : 외부모듈인 pybit를 설치해주고, 내장모듈인 datetime를 임포트해 준다.
5줄 : 임의의 current_price 함수를 선언해 주되,
변수는 20번째 줄에서 "BTCUSD"가 들어올 수 있도록
변수 1자리(symbol_name)를 만들어준다.

6줄 : 바이비트 API 접근한 내역은 session에 담는다. → 8줄에서 활용하기 위함
8줄 : session 내에 있는 바이비트API의 lastest_information_for_symbol 함수를 사용한다.
20줄에서 6줄로 전달한 "BTCUSD"를 8줄의 symbol에 넣어주고 나서,
임의의 coin_information에 넣어준다.

10줄~11줄 : 이 글의 핵심이다.
바이비트API에서 받아온 데이터를 8줄에서 변수화한 coin_information에 넣어준다.
<그림2>의 ⑤에서 확인하였듯이,
데이터 형태는 딕셔너리 > 리스트 > 딕셔너리 형태이다.
{"ret_code" : 0, ...... , "result" : [ {"symbol" : "BTCUSD", ...... , "last_price" : "20680.50", ...... } ]....}
→ 딕셔너리형 자료는 문자형(str)로 요소를 추출하고,
리스트형 자료는 숫자[0]로 요소를 추출한다.

10줄 : 8줄의 coin_information을 ['result] [0] [symbol]로 자료를 받아온다.
→ 받아온 데이터를 symbol_names에 넣는다.
11줄 : 8줄의 coin_information을 ['result] [0] [symbol]로 자료를 받아온다.
→ 받아온 데이터를 current_price에 넣는다.

13줄 : 2줄의 datetime을 이용하여 현재시간을 나타내준다.
15줄~18줄 : 코인명과 현재가, 현재시간을 출력한다.
(13줄의 현재시간을 출력한다)
20줄 : 5줄의 current_price 함수에 "BTCUSD"를 넣어서 실행해준다.


4. 전체코드 및 결과

from pybit.inverse_perpetual import HTTP
import datetime as dt


def current_price(symbol_name):
    session = HTTP(endpoint="https://api.bybit.com")

    coin_information = session.latest_information_for_symbol(symbol = symbol_name)

    symbol_names = coin_information['result'][0]['symbol']
    current_price = coin_information['result'][0]['last_price']

    data = dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    print(symbol_names)
    print(current_price)    # str 형태로 출력됨
    print(type(current_price))
    print(data)

current_price("BTCUSD")


# (expected result)
# BTCUSD
# 20680.50
# <class 'str'>
# 2022-10-29 14:44:14

5. 마치며

바이비트API를 통해 현재가를 받아오는 내용을 알아보았다.
생각보다 현재가를 알아오는 방법이 간단하다.
바이비트API에서 제공하는 데이터는
딕셔너리 > 리스트 > 딕셔너리 형태로 추출하였다.

향후에는 일정시간 동안 반복해서 현재가를 받아오는 방법을 알아볼 것이다.

반응형