ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python][업비트] pyupbit 기본 함수
    IT/python 2021. 12. 12. 13:11

    관련 포스팅: pyupbit와 talib을 이용한 코인 자동매매 프로그램

     

    코인 거래소의 api는 확실히 증권사 api보다는 약 5만배 가량 사용하기가 편했다

     

    이번 포스팅서는 코인 자동매매 프로그램을 구현하면서 사용했던 pyupbit의 함수들을 적고자 한다.

     

    # 필요 라이브러리

    ######################################################################################

    pyupbut (pip install pyupbit)

    Name: pyupbit
    Version: 0.2.21
    Summary: python wrapper for Upbit API
    Home-page: https://github.com/sharebook-kr/pyupbit
    Author: Jonghun Yoo, Brayden Jo
    Author-email: brayden.jo@outlook.com, jonghun.yoo@outlook.com, pyquant@outlook.com
    License: UNKNOWN
    Location: c:\users\home\anaconda3\envs\coin3\lib\site-packages
    Requires: pandas, requests, pyjwt, websockets
    Required-by:

    ######################################################################################

     

    # 코드

    import pyupbit

    ticker list in krw exchange

    ticker_list = pyupbit.get_tickers(fiat="KRW")
    ticker_list
    ['KRW-BTC',
     'KRW-ETH',
     'KRW-NEO',
     'KRW-MTL',
     'KRW-LTC',
     'KRW-XRP',
     'KRW-ETC',
     'KRW-OMG',
     'KRW-SNT',
     'KRW-WAVES',
     'KRW-XEM',
     'KRW-QTUM',
     'KRW-LSK',
     'KRW-STEEM',
     'KRW-XLM',
     'KRW-ARDR',
     'KRW-ARK',
     'KRW-STORJ',
     'KRW-GRS',
     'KRW-REP',
     'KRW-ADA',
     'KRW-SBD',
     'KRW-POWR',
     'KRW-BTG',
     'KRW-ICX',
     'KRW-EOS',
     'KRW-TRX',
     'KRW-SC',
     'KRW-ONT',
     'KRW-ZIL',
     'KRW-POLY',
     'KRW-ZRX',
     'KRW-LOOM',
     'KRW-BCH',
     'KRW-BAT',
     'KRW-IOST',
     'KRW-RFR',
     'KRW-CVC',
     'KRW-IQ',
     'KRW-IOTA',
     'KRW-MFT',
     'KRW-ONG',
     'KRW-GAS',
     'KRW-UPP',
     'KRW-ELF',
     'KRW-KNC',
     'KRW-BSV',
     'KRW-THETA',
     'KRW-QKC',
     'KRW-BTT',
     'KRW-MOC',
     'KRW-ENJ',
     'KRW-TFUEL',
     'KRW-MANA',
     'KRW-ANKR',
     'KRW-AERGO',
     'KRW-ATOM',
     'KRW-TT',
     'KRW-CRE',
     'KRW-MBL',
     'KRW-WAXP',
     'KRW-HBAR',
     'KRW-MED',
     'KRW-MLK',
     'KRW-STPT',
     'KRW-ORBS',
     'KRW-VET',
     'KRW-CHZ',
     'KRW-STMX',
     'KRW-DKA',
     'KRW-HIVE',
     'KRW-KAVA',
     'KRW-AHT',
     'KRW-LINK',
     'KRW-XTZ',
     'KRW-BORA',
     'KRW-JST',
     'KRW-CRO',
     'KRW-TON',
     'KRW-SXP',
     'KRW-HUNT',
     'KRW-PLA',
     'KRW-DOT',
     'KRW-SRM',
     'KRW-MVL',
     'KRW-STRAX',
     'KRW-AQT',
     'KRW-GLM',
     'KRW-SSX',
     'KRW-META',
     'KRW-FCT2',
     'KRW-CBK',
     'KRW-SAND',
     'KRW-HUM',
     'KRW-DOGE',
     'KRW-STRK',
     'KRW-PUNDIX',
     'KRW-FLOW',
     'KRW-DAWN',
     'KRW-AXS',
     'KRW-STX',
     'KRW-XEC',
     'KRW-SOL',
     'KRW-MATIC',
     'KRW-NU',
     'KRW-AAVE',
     'KRW-1INCH',
     'KRW-ALGO']

    krw-btc ohlcv data

    btc_ohlcv = pyupbit.get_ohlcv('KRW-BTC', interval='day')
    btc_ohlcv.info()
    <class 'pandas.core.frame.DataFrame'>
    DatetimeIndex: 200 entries, 2021-05-27 09:00:00 to 2021-12-12 09:00:00
    Data columns (total 6 columns):
     #   Column  Non-Null Count  Dtype  
    ---  ------  --------------  -----  
     0   open    200 non-null    float64
     1   high    200 non-null    float64
     2   low     200 non-null    float64
     3   close   200 non-null    float64
     4   volume  200 non-null    float64
     5   value   200 non-null    float64
    dtypes: float64(6)
    memory usage: 10.9 KB
    btc_ohlcv
     

    connect account

    ac_key = '발급받은 access key'
    sc_key = '발급받은 scret key'
    
    upbit = pyupbit.Upbit(ac_key, sc_key)

    load balances

    upbit.get_balances()
    [{'currency': 'KRW',
      'balance': '32173.26928697',
      'locked': '0.0',
      'avg_buy_price': '0',
      'avg_buy_price_modified': True,
      'unit_currency': 'KRW'},
     {'currency': 'BTC',
      'balance': '0.00016406',
      'locked': '0.0',
      'avg_buy_price': '60951000',
      'avg_buy_price_modified': False,
      'unit_currency': 'KRW'},
     {'currency': 'EOS',
      'balance': '0.00000002',
      'locked': '0.0',
      'avg_buy_price': '3930',
      'avg_buy_price_modified': False,
      'unit_currency': 'KRW'},
     {'currency': 'ADA',
      'balance': '5.47945205',
      'locked': '0.0',
      'avg_buy_price': '1825',
      'avg_buy_price_modified': False,
      'unit_currency': 'KRW'},
     {'currency': 'VTHO',
      'balance': '1.39059119',
      'locked': '0.0',
      'avg_buy_price': '0',
      'avg_buy_price_modified': False,
      'unit_currency': 'KRW'},
     {'currency': 'TRX',
      'balance': '177.7812895',
      'locked': '0.0',
      'avg_buy_price': '112.4978',
      'avg_buy_price_modified': False,
      'unit_currency': 'KRW'}]

    buy

    symbol = 'KRW-BTC'
    budget = 10000
    buy_order = upbit.buy_market_order(symbol, budget)
    buy_order
    {'uuid': 'ccfa1987-048f-4ccd-b2d4-ca9f8290439d',
     'side': 'bid',
     'ord_type': 'price',
     'price': '10000.0',
     'state': 'wait',
     'market': 'KRW-BTC',
     'created_at': '2021-12-12T10:43:11+09:00',
     'volume': None,
     'remaining_volume': None,
     'reserved_fee': '5.0',
     'remaining_fee': '5.0',
     'paid_fee': '0.0',
     'locked': '10005.0',
     'executed_volume': '0.0',
     'trades_count': 0}

    check order

    upbit.get_order(buy_order['uuid'])
    {'uuid': 'ccfa1987-048f-4ccd-b2d4-ca9f8290439d',
     'side': 'bid',
     'ord_type': 'price',
     'price': '10000.0',
     'state': 'cancel',
     'market': 'KRW-BTC',
     'created_at': '2021-12-12T10:43:11+09:00',
     'volume': None,
     'remaining_volume': None,
     'reserved_fee': '5.0',
     'remaining_fee': '0.000305135',
     'paid_fee': '4.999694865',
     'locked': '0.610575135',
     'executed_volume': '0.00016329',
     'trades_count': 1,
     'trades': [{'market': 'KRW-BTC',
       'uuid': 'befb77f3-b03f-447c-bf53-32a2d5ffa3c3',
       'price': '61237000.0',
       'volume': '0.00016329',
       'funds': '9999.38973',
       'created_at': '2021-12-12T10:43:11+09:00',
       'side': 'bid'}]}

    sell

    symbol = 'KRW-BTC'
    volume = 0.00016329
    sell_order = upbit.sell_market_order(symbol, volume)
    sell_order
    {'uuid': '609fdee4-389b-4853-b2b6-de5440bc1e78',
     'side': 'ask',
     'ord_type': 'market',
     'price': None,
     'state': 'wait',
     'market': 'KRW-BTC',
     'created_at': '2021-12-12T10:46:25+09:00',
     'volume': '0.00016329',
     'remaining_volume': '0.00016329',
     'reserved_fee': '0.0',
     'remaining_fee': '0.0',
     'paid_fee': '0.0',
     'locked': '0.00016329',
     'executed_volume': '0.0',
     'trades_count': 0}

    check order

    upbit.get_order(sell_order['uuid'])
    {'uuid': '609fdee4-389b-4853-b2b6-de5440bc1e78',
     'side': 'ask',
     'ord_type': 'market',
     'price': None,
     'state': 'done',
     'market': 'KRW-BTC',
     'created_at': '2021-12-12T10:46:25+09:00',
     'volume': '0.00016329',
     'remaining_volume': '0.0',
     'reserved_fee': '0.0',
     'remaining_fee': '0.0',
     'paid_fee': '4.99912335',
     'locked': '0.0',
     'executed_volume': '0.00016329',
     'trades_count': 1,
     'trades': [{'market': 'KRW-BTC',
       'uuid': '20611e88-a4c0-44a5-9f1b-2c2abc781ae2',
       'price': '61230000.0',
       'volume': '0.00016329',
       'funds': '9998.2467',
       'created_at': '2021-12-12T10:46:25+09:00',
       'side': 'ask'}]}
Designed by Tistory.