python wrapper for Bithumb API


License
MIT
Install
pip install pybithumb==0.1.29

Documentation

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์™€ ํ•จ๊ป˜ ์›น์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

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)