bithumb-api
Python Wrapper for Bithumb API
Installation
pip install pybithumb
Import
from pybithumb import Bithumb
Public API
์ํธํํ ๋ชฉ๋ก
๋น์ธ์ด ์ง์ํ๋ ์ํธํํ ๋ชฉ๋ก์ ์ป์ด์จ๋ค.
print(Bithumb.get_tickers())
['BTC', 'ETH', 'DASH', 'LTC', 'ETC', 'XRP', 'BCH', 'XMR', 'ZEC', 'QTUM', 'BTG', 'EOS', 'ICX', 'TRX', 'ELF', 'MCO', 'OMG', 'KNC', 'GNT', 'ZIL', 'WAXP', 'POWR', 'LRC', 'STEEM', 'STRAT', 'AE', 'ZRX', 'REP', 'XEM', 'SNT', 'ADA', 'CTXC', 'BAT', 'WTC', 'THETA', 'LOOM', 'WAVES', 'ITC', 'TRUE', 'LINK', 'RNT', 'ENJ', 'PLX', 'VET', 'MTL', 'INS', 'IOST', 'TMTG', 'QKC', 'BZNT', 'HDAC', 'NPXS', 'LBA', 'WET', 'AMO', 'BSV', 'APIS', 'DAC', 'ORBS', 'VALOR', 'CON', 'ANKR', 'MIX', 'LAMB', 'CRO', 'FX', 'CHR', 'MBL', 'MXC', 'FAB', 'OGO', 'DVP', 'FCT', 'FNB', 'FZZ', 'TRV', 'PCM', 'DAD', 'AOA', 'XSR', 'WOM', 'SOC', 'EM', 'QBZ', 'BOA', 'WPX', 'FLETA', 'BNP', 'SXP', 'COS', 'EL', 'BASIC', 'HC', 'BCD', 'XVG', 'XLM', 'PIVX', 'GXC', 'BHP', 'BTT', 'HYC', 'VSYS', 'IPX', 'WICC', 'LUNA', 'AION', 'COSM']
์ต๊ทผ ์ฒด๊ฒฐ๊ฐ๊ฒฉ
get_current_price ํจ์๋ ์ต๊ทผ ์ฒด๊ฒฐ ๊ฐ๊ฒฉ์ ์กฐํํ๋ค.
for coin in Bithumb.get_tickers()[:5]:
print(coin, Bithumb.get_current_price(coin))
BTC 8190000.0
ETH 171900.0
DASH 82450.0
LTC 48810.0
ETC 6180.0
์์ฅ ํํฉ ์์ธ์ ๋ณด
get_market_detail ํจ์๋ 00์ ๊ธฐ์ค์ผ๋ก ์๊ฐ/๊ณ ๊ฐ/์ ๊ฐ/์ข ๊ฐ/๊ฑฐ๋๋ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
for coin in Bithumb.get_tickers():
print(coin, Bithumb.get_market_detail(coin))
BTC (8162000.0, 8240000.0, 8050000.0, 8190000.0, 3117.77267769)
ETH (170500.0, 172600.0, 168000.0, 171500.0, 34816.2510681)
DASH (81950.0, 82700.0, 80600.0, 82450.0, 1651.47875125)
LTC (48440.0, 49410.0, 48270.0, 48810.0, 3344.70736905)
ETC (6150.0, 6250.0, 6075.0, 6180.0, 77986.83409064)
๋งค์/๋งค๋ ํธ๊ฐ
get_orderbook ํจ์๋ ํธ๊ฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก 5๊ฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉฐ, limit ํ๋ผ๋ฏธํฐ๋ก 30๊ฐ๊น์ง ์ง์ ํ ์ ์๋ค.
for coin in Bithumb.get_tickers():
print(coin, Bithumb.get_orderbook(coin))
์๊ฐ๋ณ ๊ฐ๊ฒฉ์ ๋ณด
์๊ฐ/์ข ๊ฐ/๊ณ ๊ฐ/์ ๊ฐ/๊ฑฐ๋๋ ์ ๋ณด๋ฅผ DataFrame์ผ๋ก ๋ฐํํ๋ค.
df = Bithumb.get_candlestick("BTC")
print(df.tail(5))
open close high low volume
time
2020-03-30 15:00:00 7740000.0 7848000.0 8019000.0 7683000.0 7913.696718
2020-03-31 15:00:00 7847000.0 7630000.0 7893000.0 7534000.0 5163.670206
2020-04-01 15:00:00 7633000.0 8194000.0 8216000.0 7569000.0 9123.583777
2020-04-02 15:00:00 8193000.0 8162000.0 8499000.0 8057000.0 11354.950247
2020-04-04 08:00:00 8162000.0 8177000.0 8240000.0 8050000.0 3082.263414
chart_intervals ํ๋ผ๋ฏธํฐ๋ก ์กฐํ ๊ฐ๊ฒฉ์ ์กฐ์ ํ ์ ์๋ค.
- 1m, 3m, 5m, 10m, 30m, 1h, 6h, 12h, 24h
df = Bithumb.get_candlestick("BTC", chart_intervals="30m")
print(df.tail(5))
์น์์ผ
WebSocket์ ์ด์ฉํด์ ํ์ฌ๊ฐ
, ํธ๊ฐ
, ์ฒด๊ฒฐ
์ ๋ํ ์ ๋ณด๋ฅผ ์์ ํ๋ค.
- ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ก ์์ ์ ๋ณด๋ฅผ ์
๋ ฅํ๋ฉฐ
ticker
,orderbook
,transaction
์ ์ฌ์ฉํ ์ ์๋ค. - ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ๊ตฌ๋ ํ ํํฐ๋ฅผ ์ค์ ํ๋ฉฐ ์ํธํํ์ ํฐ์ปค๋ฅผ ์ ๋ ฅํ๋ค. ํ์ฌ ๋ฒ์ ์์๋ ์ํ ์์ฅ๋ง์ ์ง์ํ๋ค.
if __name__ == "__main__":
wm = WebSocketManager("ticker", ["BTC_KRW"])
for i in range(10):
data = wm.get()
print(data)
wm.terminate()
์ฃผ์ํ ์ฌํญ์ multiprocessing์ ์ํด __name__
guard๋ฅผ ๋ฐ๋์ ์จ์ค์ผํ๋ค๋ ๊ฒ์ด๋ค.
PyQt5์ ํจ๊ป ์น์์ผ์ ์ฌ์ฉํ๋ ์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์น์์ผ์์ ๊ฐ๊ฒฉ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
- https://gist.github.com/mr-yoo/a3d1f8a4152f94cf61e4bc566659cd20
Private API
๋ก๊ทธ์ธ
connectkey์ secretkey๋ฅผ ์ฌ์ฉํด์ ๋ก๊ทธ์ธํ๋ค. ๋ key๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋งํฌ๋ฅผ ์ฐธ์กฐํ๋ค.
bithumb = Bithumb("conkey", "seckey")
์์๋ฃ ์กฐํ
print(bithumb.get_trading_fee())
์๊ณ ์กฐํ
for coin in Bithumb.get_tickers():
print(coin, bithumb.get_balance(coin))
๋งค์/๋งค๋ ์ฃผ๋ฌธ
๋นํธ์ฝ์ธ์ 1100๋ง์์ 1๊ฐ ๋งค์/๋งค๋ํ๋ค.
desc = bithumb.buy_limit_order("BTC", 11000000, 1)
desc = bithumb.sell_limit_order("BTC", 11000000, 1)
๋งค์/๋งค๋ ์๋ ํ์ธ
quanity = bithumb.get_outstanding_order(desc)
๋งค์/๋งค๋ ์ฃผ๋ฌธ ์ทจ์
status = bithumb.cancel_order(desc)