파이썬) pyupbit모듈을 이용해 업비트의 시장정보 얻어오기
pyupbit은 파이썬용 업비트 API 클라이언트 모듈로, 업비트 거래소의 API를 편리하게 사용할 수 있도록 도와줍니다.
이 모듈은 업비트와 통신하고 시장 데이터를 조회하며, 주문을 실행하고 거래 기록을 확인하는 등 다양한 기능을 제공합니다.
pyupbit을 사용해 자동화된 거래 전략을 구현하거나 업비트의 시장 데이터를 분석하는 등 다양한 암호화폐 관련 작업을 할 수 있습니다.
목차
0. pyupbit 모듈 설치
pip를 사용하여 pyupbit 패키지를 설지합니다.
명령 프롬프트에서 다음 명령어를 실행합니다.
pip install pyupbit
pyupbit 모듈이 잘 설치 되었는지 확인합니다
import pyupbit
print(pyupbit.Upbit)
이제 pyupbit의 간단한 사용예제를 알아보겠습니다.
1. 상장된 암호화폐 목록 가져오기
pyupbit을 이용해 암호화폐를 거래하려면 업비트에 상장되 있는 코인 목록을 알아야합니다.
get_tickers()함수를 통해 알 수 있습니다.
아래 코드를 실행하면 업비트에 상장된 모든 암호화폐 목록을 확인할 수 있습니다
import pyupbit
tickers = pyupbit.get_tickers()
print(tickers)
만약 원화시장의 암호화폐 목록만 확인하고 싶다면 아래의 코드를 실행해 확인할 수 있습니다.
import pyupbit
tickers = pyupbit.get_tickers('KRW')
print(tickers)
2. 현재 가격 가져오기
get_currnt_price 함수를 통해 암호화폐의 현재 가격 즉, 마지막으로 채결된 가격을 가져올 수 있습니다.
아래 코드는 원화시장의 비트코인의 현재가를 가져오는 코드입니다.
import pyupbit
BTC = pyupbit.get_current_price('KRW-BTC')
print(BTC)
만약 여러 개의 암호화폐 가격을 조회하고 싶다면 리스트 형태로 입력해 한 번에 현재가를 조회할 수 있습니다.
아래 코드는 원화시장의 비트코인과 리플의 가격을 가져오는 코드입니다.
import pyupbit
prices = pyupbit.get_current_price(["KRW-BTC", "KRW-XRP"])
print(prices)
여러 암호화폐를 조회한 경우 딕셔너리로 현재가를 리턴합니다.
3. 차트 데이터 가져오기
자동매매를 하는 경우 과거의 정보를 가져와야 하는 경우가 많습니다.
get_ohlcv()함수를 통해 ticker를 넘겨주면 해당 암호화폐의 ohlcv 데이터를 pandas DataFrame으로 변환해 리턴해 줍니다.
아래 코드는 원화시장의 비트코인 과거 데이터를 가져오는 코드입니다.
import pyupbit
df = pyupbit.get_ohlcv('KRW-BTC')
print(df.tail())
result
open high ... volume value
2023-05-22 09:00:00 36057000.0 36200000.0 ... 2597.921922 9.332619e+10
2023-05-23 09:00:00 35947000.0 36660000.0 ... 2510.275788 9.128479e+10
2023-05-24 09:00:00 36382000.0 36430000.0 ... 4471.519601 1.599408e+11
2023-05-25 09:00:00 35465000.0 35670000.0 ... 3394.737419 1.197012e+11
2023-05-26 09:00:00 35550000.0 35614000.0 ... 996.028724 3.530657e+10
get_ohlcv()함수는 다음과 같이 구성되어 있습니다.
get_ohlcv(ticker='KRW-BTC', interval='day', count=100, to=None, period=1)
- interval은 조회 단위를 나타내며 인자값은 다음과 같습니다
day / minute1 / minute3 / minute5 / minute10 / minute15 / minute30 / minute60 / minute240 / week / month
- count는 조회개수를 지정합니다. 최근 영업일 부터 이전 count 만큼의 이전 영업일까지 조회합니다.
count 파라미터를 입력하지 않을 경우 default value는 200입니다.
- to는 입력된 이전 단위 까지의 데이터를 얻을 수 있습니다.
예로 2020-10-10일을 입력시 2020-10-10일 보다 하주 전인 2020-10-09일 까지의 데이터를 조회합니다
to 파라미터를 입력하지 않을 경우 단위는 일봉입니다.
아래 코드는 600개의 데이터를 1시간 단위로 불러오는 코드입니다.
import pyupbit
#600개의 데이터를 1시간 단위로 불러옴
df = pyupbit.get_ohlcv("KRW-BTC", count=600, interval='minute60')
print(df)
result
open high ... volume value
2023-05-01 19:00:00 38340000.0 38360000.0 ... 92.147961 3.529605e+09
2023-05-01 20:00:00 38341000.0 38365000.0 ... 79.494675 3.046026e+09
2023-05-01 21:00:00 38283000.0 38329000.0 ... 151.406275 5.790441e+09
2023-05-01 22:00:00 38285000.0 38402000.0 ... 176.860271 6.771750e+09
2023-05-01 23:00:00 38207000.0 38350000.0 ... 224.721633 8.588517e+09
... ... ... ... ... ...
2023-05-26 14:00:00 35369000.0 35389000.0 ... 107.646688 3.804784e+09
2023-05-26 15:00:00 35301000.0 35400000.0 ... 70.278173 2.483325e+09
2023-05-26 16:00:00 35391000.0 35521000.0 ... 88.699574 3.144735e+09
2023-05-26 17:00:00 35502000.0 35539000.0 ... 75.925588 2.695379e+09
2023-05-26 18:00:00 35432000.0 35437000.0 ... 19.517935 6.912437e+08
4. 매수/매도 호가 불러오기
암호화폐의 매수/매도 호가는 get_orderbook() 함수를 이용해 불러올 수 있습니다.
인자로 ticker를 넘겨주면 딕셔너리로 호가 정보가 반환됩니다.
다음은 원화시장의 비트코인의 호가 정보를 조회하는 코드입니다.
import pyupbit
orderbook = pyupbit.get_orderbook(ticker="KRW-BTC")
print(orderbook)
result
{'market': 'KRW-BTC', 'timestamp': 1685093030679, 'total_ask_size': 7.382298420000001, 'total_bid_size': 1.8858017399999998, 'orderbook_units': [{'ask_price': 35445000.0, 'bid_price': 35436000.0, 'ask_size': 0.02851146, 'bid_size': 0.02205307}, {'ask_price': 35447000.0, 'bid_price': 35433000.0, 'ask_size': 0.12107979, 'bid_size': 0.24763031}, {'ask_price': 35450000.0, 'bid_price': 35432000.0, 'ask_size': 0.29928968, 'bid_size': 0.77757828}, {'ask_price': 35452000.0, 'bid_price': 35431000.0, 'ask_size': 0.07936143, 'bid_size': 0.08745373}, {'ask_price': 35457000.0, 'bid_price': 35430000.0, 'ask_size': 0.0010297, 'bid_size': 0.03379747}, {'ask_price': 35458000.0, 'bid_price': 35428000.0, 'ask_size': 0.0001474, 'bid_size': 0.00039483}, {'ask_price': 35459000.0, 'bid_price': 35427000.0, 'ask_size': 0.00949236, 'bid_size': 0.01411352}, {'ask_price': 35460000.0, 'bid_price': 35425000.0, 'ask_size': 0.03554049, 'bid_size': 0.00310018}, {'ask_price': 35461000.0, 'bid_price': 35412000.0, 'ask_size': 0.3034539, 'bid_size': 0.00028224}, {'ask_price': 35462000.0, 'bid_price': 35411000.0, 'ask_size': 1.82039221, 'bid_size': 0.06304914}, {'ask_price': 35466000.0, 'bid_price': 35410000.0, 'ask_size': 0.182, 'bid_size': 0.00623208}, {'ask_price': 35467000.0, 'bid_price': 35409000.0, 'ask_size': 0.097, 'bid_size': 0.12573362}, {'ask_price': 35470000.0, 'bid_price': 35408000.0, 'ask_size': 1.4, 'bid_size': 0.38268728}, {'ask_price': 35471000.0, 'bid_price': 35407000.0, 'ask_size': 2.76, 'bid_size': 0.00759022}, {'ask_price': 35475000.0, 'bid_price': 35406000.0, 'ask_size': 0.245, 'bid_size': 0.11410577}]}
ticker파라미터에 리스트로 티커를 넣으면 한 번에 여러 종목의 호가를 조회할 수 있습니다.
print(pyupbit.get_orderbook(ticker=["KRW-BTC", "KRW-XRP"]))
개발 문의
https://open.kakao.com/o/sL6Kzt7f
[개발 외주] 자동화, 매크로 ,크롤링, 엑셀 전문
#파이썬 #오토핫키 #자동화 #크롤링 #엑셀 #하드웨어 #업무자동화
open.kakao.com