Skip to main content

python wrapper for Upbit API

Project description

pyupbit

Python Wrapper for Upbit API

Installation

파이썬 개발 환경으로 최신 버전의 Anaconda를 설치하세요. (Python3 버전용)

pip install pyupbit

pyjwt 모듈을 설치하세요.

pip install pyjwt

Import

import pyupbit

Quotation API

암호화폐 목록

업비트가 지원하는 모든 암호화폐 목록을 얻어온다.

print(pyupbit.get_tickers())

리턴값은 다음과 같다.

['KRW-BTC', 'KRW-DASH', 'KRW-ETH', 'BTC-NEO', 'BTC-ETH', 'BTC-LTC', 'BTC-STRAT', 'BTC-XRP', 'BTC-ETC', 'BTC-OMG', 'BTC-CVC', 'BTC-DGB', 'BTC-PAY', 'BTC-SC', 'BTC-SNT', 'BTC-DASH', 'BTC-XVG', 'BTC-WAVES', 'BTC-NMR', 'BTC-SYNX', 'BTC-PIVX', 'BTC-GBYTE', 'BTC-XEM', 'BTC-ZEC', 'BTC-XMR', 'BTC-LBC', 'BTC-QTUM', 'BTC-GNT', 'BTC-NXT', 'BTC-BAT', 'BTC-XEL', 'BTC-EDG', 'BTC-LSK', 'BTC-RDD', 'BTC-DCT', 'BTC-STEEM', 'BTC-GAME', 'BTC-FCT', 'BTC-PTOY', 'BTC-DCR', 'BTC-DOGE', 'BTC-BNT', 'BTC-XLM', 'BTC-PART', 'BTC-MCO', 'BTC-UBQ', 'BTC-ARDR', 'BTC-KMD', 'BTC-ARK', 'BTC-ADX', 'BTC-SYS', 'BTC-ANT', 'BTC-MUE', 'BTC-XDN', 'BTC-STORJ', 'BTC-QRL', 'BTC-NXS', 'BTC-GRS', 'BTC-VTC', 'BTC-CLOAK', 'BTC-SIB', 'BTC-REP', 'BTC-VIA', 'BTC-WINGS', 'BTC-CFI', 'BTC-UNB', 'BTC-NBT', 'BTC-SWT', 'BTC-SLS', 'BTC-MONA', 'BTC-AMP', 'BTC-HMQ', 'BTC-TX', 'BTC-RLC', 'BTC-BLOCK', 'BTC-DYN', 'BTC-GUP', 'BTC-MEME', 'BTC-OK', 'BTC-XZC', 'BTC-ADT', 'BTC-FTC', 'BTC-ION', 'BTC-BSD', 'BTC-GNO', 'BTC-EMC2', 'BTC-EXCL', 'BTC-SPHR', 'BTC-EXP', 'BTC-BITB', 'BTC-BAY', 'BTC-VRC', 'BTC-BURST', 'BTC-SHIFT', 'BTC-BLK', 'BTC-ZEN', 'BTC-KORE', 'BTC-RADS', 'ETH-NEO', 'ETH-LTC', 'ETH-STRAT', 'ETH-XRP', 'ETH-ETC', 'ETH-OMG', 'ETH-CVC', 'ETH-DGB', 'ETH-PAY', 'ETH-SC', 'ETH-SNT', 'ETH-DASH', 'ETH-WAVES', 'ETH-XEM', 'ETH-ZEC', 'ETH-XMR', 'ETH-QTUM', 'ETH-GNT', 'ETH-BAT', 'ETH-FCT', 'ETH-BNT', 'ETH-XLM', 'ETH-MCO', 'ETH-ADX', 'ETH-ANT', 'ETH-REP', 'ETH-CFI', 'ETH-RLC', 'ETH-GUP', 'ETH-ADT', 'ETH-GNO', 'USDT-BTC', 'USDT-NEO', 'USDT-ETH', 'USDT-LTC', 'USDT-XRP', 'USDT-ETC', 'USDT-DASH', 'USDT-ZEC', 'USDT-XMR', 'KRW-NEO', 'KRW-MTL', 'KRW-LTC', 'KRW-STRAT', 'KRW-XRP', 'KRW-ETC', 'KRW-OMG', 'KRW-SNT', 'KRW-WAVES', 'KRW-PIVX', 'KRW-XEM', 'KRW-ZEC', 'KRW-XMR', 'KRW-QTUM', 'KRW-GNT', 'KRW-LSK', 'KRW-STEEM', 'KRW-XLM', 'KRW-ARDR', 'KRW-KMD', 'KRW-ARK', 'KRW-STORJ', 'KRW-GRS', 'KRW-VTC', 'KRW-REP', 'KRW-EMC2', 'BTC-IOP', 'BTC-NAV', 'KRW-ADA', 'BTC-ADA', 'BTC-MANA', 'ETH-MANA', 'USDT-OMG', 'BTC-SALT', 'ETH-SALT', 'KRW-SBD', 'BTC-SBD', 'KRW-TIX', 'BTC-TIX', 'ETH-TIX', 'BTC-RCN', 'ETH-RCN', 'BTC-VIB', 'ETH-VIB', 'KRW-POWR', 'BTC-POWR', 'ETH-POWR', 'KRW-MER', 'BTC-MER', 'BTC-BTG', 'ETH-BTG', 'KRW-BTG', 'USDT-XVG', 'USDT-ADA', 'USDT-BTG', 'USDT-NXT', 'BTC-ENG', 'BTC-UKG', 'BTC-DNT', 'BTC-IGNIS', 'BTC-SRN', 'ETH-SRN', 'BTC-WAX', 'ETH-WAX', 'BTC-ZRX', 'ETH-ZRX', 'ETH-VEE', 'BTC-VEE', 'BTC-BCPT', 'ETH-BCPT', 'BTC-TRX', 'ETH-TRX', 'BTC-TUSD', 'BTC-LRC', 'ETH-LRC', 'BTC-RVR', 'ETH-TUSD', 'BTC-UP', 'ETH-UP', 'KRW-ICX', 'KRW-EOS', 'KRW-STORM', 'ETH-ADA', 'ETH-ENG', 'ETH-UKG', 'BTC-DMT', 'ETH-DMT', 'USDT-TUSD', 'BTC-LUN', 'ETH-LUN', 'KRW-TRX', 'BTC-POLY', 'ETH-POLY', 'BTC-EMC', 'KRW-MCO', 'BTC-PRO', 'ETH-PRO', 'USDT-SC', 'USDT-TRX', 'KRW-SC', 'KRW-GTO', 'KRW-IGNIS', 'KRW-ONT', 'KRW-DCR', 'KRW-ZIL', 'BTC-BLT', 'ETH-BLT', 'BTC-STORM', 'ETH-STORM', 'BTC-AID', 'ETH-AID', 'BTC-NGC', 'ETH-NGC', 'BTC-GTO', 'ETH-GTO', 'USDT-DCR', 'BTC-OCN', 'ETH-OCN', 'KRW-POLY', 'KRW-ZRX', 'BTC-TUBE', 'KRW-SRN', 'KRW-LOOM', 'BTC-CMCT', 'BTC-BCH', 'ETH-BCH', 'USDT-BCH', 'KRW-BCH', 'BTC-BKX', 'BTC-MFT', 'BTC-LOOM']

업비트가 지원하는 암호화폐 목록 중 특정 Fiat로 매매가 가능한 목록만 얻어올 수도 있다.

print(pyupbit.get_tickers(fiat="KRW"))
print(pyupbit.get_tickers(fiat="BTC"))
print(pyupbit.get_tickers(fiat="USDT"))

fiat="KRW"의 리턴값은 다음과 같다.

['KRW-BTC', 'KRW-DASH', 'KRW-ETH', 'KRW-NEO', 'KRW-MTL', 'KRW-LTC', 'KRW-STRAT', 'KRW-XRP', 'KRW-ETC', 'KRW-OMG', 'KRW-SNT', 'KRW-WAVES', 'KRW-PIVX', 'KRW-XEM', 'KRW-ZEC', 'KRW-XMR', 'KRW-QTUM', 'KRW-GNT', 'KRW-LSK', 'KRW-STEEM', 'KRW-XLM', 'KRW-ARDR', 'KRW-KMD', 'KRW-ARK', 'KRW-STORJ', 'KRW-GRS', 'KRW-VTC', 'KRW-REP', 'KRW-EMC2', 'KRW-ADA', 'KRW-SBD', 'KRW-TIX', 'KRW-POWR', 'KRW-MER', 'KRW-BTG', 'KRW-ICX', 'KRW-EOS', 'KRW-STORM', 'KRW-TRX', 'KRW-MCO', 'KRW-SC', 'KRW-GTO', 'KRW-IGNIS', 'KRW-ONT', 'KRW-DCR', 'KRW-ZIL', 'KRW-POLY', 'KRW-ZRX', 'KRW-SRN', 'KRW-LOOM', 'KRW-BCH']

최근 체결가격

특정 암호화폐에 대한 현재가를 얻어온다.

print(pyupbit.get_current_price("KRW-BTC"))

리턴값은 다음과 같다.

8392000.0

리스트를 통해 여러 종목에 대해 한 번에 조회할 수 있다.

print(pyupbit.get_current_price(["KRW-BTC", "KRW-XRP"]))

여러 종목에 대해 동시 조회한 경우 딕셔너리 객체로 리턴한다.

{'KRW-BTC': 8300000.0, 'KRW-XRP': 511.0}

차트 데이터

print(pyupbit.get_ohlcv("KRW-BTC", interval="day", count=5))    # 일봉 데이터 (5일)
print(pyupbit.get_ohlcv("KRW-BTC", interval="minute1"))         # 분봉 데이터
print(pyupbit.get_ohlcv("KRW-BTC", interval="week"))            # 주봉 데이터 

리턴값은 Pandas DataFrame 객체이다.

                          open       high     ...           close       volume
2018-07-16 09:00:00  7179000.0  7468000.0     ...       7454000.0  6215.793339
2018-07-17 09:00:00  7454000.0  8140000.0     ...       8080000.0  8866.816695
2018-07-18 09:00:00  8080000.0  8450000.0     ...       8302000.0  9226.449696
2018-07-19 09:00:00  8292000.0  8512000.0     ...       8443000.0  6091.929945
2018-07-20 09:00:00  8443000.0  8671000.0     ...       8389000.0  6985.379832

기준 시간 단위로 shift된 일봉을 계산할 수도 있다.

예) 2019-06-01 12:00:00 ~ 2019-06-02 11:59:59

print(pyupbit.get_daily_ohlcv_from_base("KRW-BTC", base=12))

예) 2019-06-01 13:00:00 ~ 2019-06-02 12:59:59

print(pyupbit.get_daily_ohlcv_from_base("KRW-BTC", base=13))

매수/매도 호가

print(pyupbit.get_orderbook(tickers="KRW-BTC"))
print(pyupbit.get_orderbook(tickers=["KRW-BTC", "KRW-XRP"]))

리턴값은 다음과 같다.

[{'market': 'KRW-BTC', 'timestamp': 1532118943687, 'total_ask_size': 17.08116346, 'total_bid_size': 3.07150192, 'orderbook_units': [{'ask_price': 8390000.0, 'bid_price': 8389000.0, 'ask_size': 3.16057415, 'bid_size': 0.5515136}, {'ask_price': 8392000.0, 'bid_price': 8387000.0, 'ask_size': 0.71247596, 'bid_size': 0.95157819}, {'ask_price': 8393000.0, 'bid_price': 8386000.0, 'ask_size': 3.70536818, 'bid_size': 0.15824907}, {'ask_price': 8398000.0, 'bid_price': 8385000.0, 'ask_size': 0.00481809, 'bid_size': 0.00119147}, {'ask_price': 8399000.0, 'bid_price': 8383000.0, 'ask_size': 1.1228337, 'bid_size': 0.05}, {'ask_price': 8400000.0, 'bid_price': 8380000.0, 'ask_size': 0.48354827, 'bid_size': 0.00613734}, {'ask_price': 8401000.0, 'bid_price': 8375000.0, 'ask_size': 0.00433629, 'bid_size': 0.05}, {'ask_price': 8402000.0, 'bid_price': 8374000.0, 'ask_size': 2.7434153, 'bid_size': 0.32104953}, {'ask_price': 8420000.0, 'bid_price': 8373000.0, 'ask_size': 0.0028, 'bid_size': 0.5010063}, {'ask_price': 8428000.0, 'bid_price': 8370000.0, 'ask_size': 5.14099352, 'bid_size': 0.48077642}]}]

Exchange API

로그인

Access Key와 Sercret Key를 사용해서 로그인한다.

access = "73kVqowGQOGEjdR31221j31j2ifekjkgjekgjekg"          # 본인 값으로 변경
secret = "egjekgj3iekeEEkej3i3j3iejjwiEejiejeEeijg"          # 본인 값으로 변경
upbit = Upbit(access, secret)

잔고 조회

print(upbit.get_balances())

튜플 객체를 리턴하는데 0번에는 잔고 데이터 (파이썬 리스트)가 1번에는 호출 제한 데이터 (파이썬 딕셔너리)가 있다.

([{'currency': 'KRW', 'balance': '10134.93', 'locked': '0.0', 'avg_krw_buy_price': '0', 'modified': False}, {'currency': 'XRP', 'balance': '20.0', 'locked': '0.0', 'avg_krw_buy_price': '508.66', 'modified': False}], {'group': 'default', 'min': 1799, 'sec': 29})

원화/코인 잔고 조회

특정 코인이나 원화의 잔고만 조회한다.

print(upbit.get_balance(ticker="KRW"))
print(upbit.get_balance(ticker="KRW-BTC"))
print(upbit.get_balance(ticker="KRW-XRP"))

지정가 매수/매도 주문

리플을 507원에 20개 매수한다. 리플을 500원에 20개 매도한다.

# 매도
print(upbit.sell_limit_order("KRW-XRP", 507, 20))

튜플 객체를 리턴하는데 0번에는 주문 정보 (파이썬 딕셔너리)가 1번에는 호출 제한 데이터 (파이썬 딕셔너리)가 있다.

({'uuid': '1ab8ac28-e880-4a04-b868-a82d755b0945', 'side': 'ask', 'ord_type': 'limit', 'price': '1000.0', 'avg_price': '0.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2018-07-21T05:38:48+09:00', 'volume': '20.0', 'remaining_volume': '20.0', 'reserved_fee': '0.0', 'remaining_fee': '0.0', 'paid_fee': '0.0', 'locked': '20.0', 'executed_volume': '0.0', 'trades_count': 0}, {'group': 'order', 'min': 79, 'sec': 6})
# 매수
print(upbit.buy_limit_order("KRW-XRP", 500, 20))

튜플 객체를 리턴하는데 0번에는 주문 정보 (파이썬 딕셔너리)가 1번에는 호출 제한 데이터 (파이썬 딕셔너리)가 있다.

({'uuid': '82e211da-21f6-4355-9d76-83e7248e2c0c', 'side': 'bid', 'ord_type': 'limit', 'price': '200.0', 'avg_price': '0.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2018-07-21T05:39:40+09:00', 'volume': '20.0', 'remaining_volume': '20.0', 'reserved_fee': '2.0', 'remaining_fee': '2.0', 'paid_fee': '0.0', 'locked': '4002.0', 'executed_volume': '0.0', 'trades_count': 0}, {'group': 'order', 'min': 78, 'sec': 6})

시장가 매수/매도 주문

# 시장가 매수
print(upbit.buy_market_order("KRW-XRP", 10000))     # 10,000원 어치 리플 시장가 매수 

# 시장가 매도
print(upbit.sell_market_order("KRW-XRP", 30))       # 리플 30개 시장가 매도  

매수/매도 주문 취소

주문 함수의 리턴 값 중 uuid 값을 사용해서 주문을 취소할 수 있다.

print(upbit.cancel_order('e57a3bc0-0b0b-4540-96f2-f35f19c51e8d'))

튜플 객체를 리턴하는데 0번에는 주문 취소 정보 (파이썬 딕셔너리)가 1번에는 호출 제한 데이터 (파이썬 딕셔너리)가 있다.

({'uuid': '82e211da-21f6-4355-9d76-83e7248e2c0c', 'side': 'bid', 'ord_type': 'limit', 'price': '200.0', 'avg_price': '0.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2018-07-21T05:39:40+09:00', 'volume': '20.0', 'remaining_volume': '20.0', 'reserved_fee': '2.0', 'remaining_fee': '2.0', 'paid_fee': '0.0', 'locked': '4002.0', 'executed_volume': '0.0', 'trades_count': 0}, {'group': 'default', 'min': 1799, 'sec': 29})

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyupbit-0.2.8.tar.gz (12.7 kB view hashes)

Uploaded Source

Built Distribution

pyupbit-0.2.8-py3-none-any.whl (14.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page