자동매매/업비트

파이썬) pyupbit모듈을 이용해 업비트의 시장정보 얻어오기

개발자범진 2023. 5. 26. 18:32
반응형

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://kmong.com/gig/563953

    https://open.kakao.com/o/sL6Kzt7f

     

    [개발 외주] 자동화, 매크로 ,크롤링, 엑셀 전문

    #파이썬 #오토핫키 #자동화 #크롤링 #엑셀 #하드웨어 #업무자동화

    open.kakao.com

     

    반응형