Python Wrapper for Bithumb API - grruju/uju GitHub Wiki
Installation
pip install pybithumb
Import
from pybithumb import Bithumb
Public API
์ํธํํ ๋ชฉ๋ก
๋น์ธ์ด ์ง์ํ๋ ์ํธํํ ๋ชฉ๋ก์ ์ป์ด์จ๋ค.
print(Bithumb.get_tickers())
['BTC', 'ETH', 'LTC', 'ETC', 'XRP', 'BCH', 'QTUM', 'BTG', 'EOS', 'ICX', 'TRX', 'ELF', 'OMG', 'KNC', 'GLM', 'ZIL', 'WAXP', 'POWR', 'LRC', 'STEEM', 'STRAX', 'ZRX', 'REP', 'XEM', 'SNT', 'ADA', 'CTXC', 'BAT', 'WTC', 'THETA', 'LOOM', 'WAVES', 'TRUE', 'LINK', 'ENJ',
'VET', 'MTL', 'IOST', 'TMTG', 'QKC', 'HDAC', 'AMO', 'BSV', 'ORBS', 'TFUEL', 'VALOR', 'CON', 'ANKR', 'MIX', 'CRO', 'FX', 'CHR', 'MBL', 'MXC', 'FCT', 'TRV', 'DAD', 'WOM', 'SOC', 'EM', 'BOA', 'FLETA', 'SXP', 'COS', 'APIX', 'EL', 'BASIC', 'HIVE', 'XPR', 'VRA', 'FIT', 'EGG', 'BORA', 'ARPA', 'APM', 'CKB', 'AERGO', 'ANW', 'CENNZ', 'EVZ', 'CYCLUB', 'SRM', 'QTCON', 'UNI', 'YFI', 'UMA', 'AAVE', 'COMP', 'REN', 'BAL', 'RSR', 'NMR', 'RLC', 'UOS', 'SAND', 'GOM2', 'RINGX', 'BEL', 'OBSR', 'ORC', 'POLA', 'AWO', 'ADP', 'DVI', 'GHX', 'MIR', 'MVC', 'BLY', 'WOZX', 'ANV', 'GRT', 'MM', 'BIOT', 'XNO', 'SNX', 'RAI', 'COLA', 'NU', 'OXT', 'LINA', 'MAP', 'AQT', 'WIKEN', 'CTSI', 'MANA', 'LPT', 'MKR', 'SUSHI', 'ASM', 'PUNDIX', 'CELR', 'LF', 'ARW', 'MSB', 'RLY', 'OCEAN', 'BFC', 'ALICE', 'CAKE', 'BNT', 'XVS', 'CHZ', 'AXS', 'DAI', 'MATIC', 'BAKE', 'VELO', 'BCD', 'XLM', 'GXC', 'BTT', 'VSYS', 'IPX', 'WICC', 'ONT', 'LUNA', 'AION', 'META', 'KLAY', 'ONG', 'ALGO', 'JST', 'XTZ', 'MLK', 'WEMIX', 'DOT', 'ATOM', 'SSX', 'TEMCO', 'HIBS', 'BURGER', 'DOGE', 'KSM', 'CTK', 'XYM', 'BNB', 'SUN', 'XEC', 'PCI', 'SOL']
์ต๊ทผ ์ฒด๊ฒฐ๊ฐ๊ฒฉ
get_current_price ํจ์๋ ์ต๊ทผ ์ฒด๊ฒฐ ๊ฐ๊ฒฉ์ ์กฐํํ๋ค.
for coin in Bithumb.get_tickers()[:5]:
print(coin, Bithumb.get_current_price(coin))
BTC 78568000.0
ETH 4697000.0
LTC 229200.0
ETC 64400.0
XRP 1329.0
์์ฅ ํํฉ ์์ธ์ ๋ณด
get_market_detail ํจ์๋ 00์ ๊ธฐ์ค์ผ๋ก ์๊ฐ/๊ณ ๊ฐ/์ ๊ฐ/์ข ๊ฐ/๊ฑฐ๋๋ ์ ๋ณด๋ฅผ ๋ฐํํ๋ค.
for coin in Bithumb.get_tickers():
print(coin, Bithumb.get_market_detail(coin))
BTC (76498000.0, 78746000.0, 76261000.0, 78588000.0, 1260.7801685)
ETH (4651000.0, 4699000.0, 4629000.0, 4699000.0, 7710.88377203)
LTC (226500.0, 229700.0, 226300.0, 229200.0, 2414.08790075)
ETC (64250.0, 64500.0, 64000.0, 64400.0, 20317.59633999)
XRP (1325.0, 1334.0, 1320.0, 1329.0, 11575639.48943114)
๋งค์/๋งค๋ ํธ๊ฐ
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 high low close volume
time
2021-10-16 00:00:00 73679000.0 76605000.0 73102000.0 74339000.0 4313.858489
2021-10-17 00:00:00 74319000.0 75283000.0 73926000.0 74727000.0 2922.465535
2021-10-18 00:00:00 74776000.0 77000000.0 73717000.0 76297000.0 4088.309876
2021-10-19 00:00:00 76329000.0 77200000.0 75493000.0 76498000.0 3374.366920
2021-10-20 07:00:00 76498000.0 78746000.0 76261000.0 78616000.0 1264.517067
chart_intervals ํ๋ผ๋ฏธํฐ๋ก ์กฐํ ๊ฐ๊ฒฉ์ ์กฐ์ ํ ์ ์๋ค.
- 1m, 3m, 5m, 10m, 30m, 1h, 6h, 12h, 24h
df = Bithumb.get_candlestick("BTC", chart_intervals="30m")
print(df.tail(5))
open high low close volume
time
2021-10-20 05:30:00 78432000.0 78746000.0 78407000.0 78660000.0 78.082516
2021-10-20 06:00:00 78653000.0 78669000.0 78023000.0 78169000.0 75.424302
2021-10-20 06:30:00 78175000.0 78633000.0 78157000.0 78459000.0 100.155448
2021-10-20 07:00:00 78461000.0 78626000.0 78269000.0 78290000.0 80.078140
2021-10-20 07:32:00 78311000.0 78357000.0 78259000.0 78357000.0 6.885242
์น์์ผ
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")
์์๋ฃ ์กฐํ
for coin in Bithumb.get_tickers():
print(coin, bithumb.get_trading_fee(coin))
์๊ณ ์กฐํ
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)