pyupbit

1 minute read

간단 사용법 정리 입니다. (기록용)

Upbit Class instance 생성

import pyupbit

access_key = "xxx"
secret_key = "xxx"

upbit = pyupbit.Upbit(access_key, secret_key)

잔고 조회

get_balances()주의! balance’s’이다.

balance = upbit.get_balances()
print(balance)

결과는 아래와 같이 딕셔너리의 리스트 형태로 얻어짐

[{'currency': 'KRW', 'balance': '5081.90606119', 'locked': '0.0', 'avg_buy_price': '0', 'avg_buy_price_modified': True, 'unit_currency': 'KRW'}, {'currency': 'BTC', 'balance': '0.00025324', 'locked': '0.0', 'avg_buy_price': '78584144.33', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'}, {'currency': 'ETH', 'balance': '0.00174459', 'locked': '0.0', 'avg_buy_price': '2866000', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'}, {'currency': 'XRP', 'balance': '3.48432055', 'locked': '0.0', 'avg_buy_price': '1435', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'}, {'currency': 'MLK', 'balance': '1.55038759', 'locked': '0.0', 'avg_buy_price': '3225', 'avg_buy_price_modified': False, 'unit_currency': 'KRW'}]

참고로 s 없는 upbit_balance() 의 경우 해당 통화의 잔고만 선택적으로 보여줌.

지정가 매수/매도

  • 매수
    ret = upbit.buy_limit_order("KRW-XRP", 1000, 5)
    print(ret)
    

    원화시장에서 XRP(리플)을 지정가 1000원으로 5개 매수 요청! return 결과는 아래와 같다.

    {'uuid': 'eb0784d3-3d4f-42cc-9532-b6e009c3c099', 'side': 'bid', 'ord_type': 'limit', 'price': '1000.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2021-04-13T21:03:53+09:00', 'volume': '5.0', 'remaining_volume': '5.0', 'reserved_fee': '2.5', 'remaining_fee': '2.5', 'paid_fee': '0.0', 'locked': '5002.5', 'executed_volume': '0.0', 'trades_count': 0}
    

    결과값에서 uuid라는 unique ID가 리턴 되는 것을 주목. error가 뜰 경우에는 아래와 같이 반환 된다.

    {'error': {'message': '주문가능한 금액(KRW)이 부족합니다.', 'name': 'insufficient_funds_bid'}}
    
  • 매도
    ret = upbit.sell_limit_order("KRW-XRP", 5000, 3)
    print (ret)
    

    원화시장에서 XRP(리플)을 지정가 5000원으로 3개 매도 요청! return 결과

    {'uuid': 'ed390647-6205-49e4-b4c9-a57f89c33789', 'side': 'ask', 'ord_type': 'limit', 'price': '5000.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2021-04-13T21:09:07+09:00', 'volume': '3.0', 'remaining_volume': '3.0', 'reserved_fee': '0.0', 'remaining_fee': '0.0', 'paid_fee': '0.0', 'locked': '3.0', 'executed_volume': '0.0', 'trades_count': 0}
    

주문 취소

아래와 같이 uuid를 argument로 해서 취소한다.

ret = upbit.cancel_order('ed390647-6205-49e4-b4c9-a57f89c33789')
print(ret)

return 결과

{'uuid': 'ed390647-6205-49e4-b4c9-a57f89c33789', 'side': 'ask', 'ord_type': 'limit', 'price': '5000.0', 'state': 'wait', 'market': 'KRW-XRP', 'created_at': '2021-04-13T21:09:07+09:00', 'volume': '3.0', 'remaining_volume': '3.0', 'reserved_fee': '0.0', 'remaining_fee': '0.0', 'paid_fee': '0.0', 'locked': '3.0', 'executed_volume': '0.0', 'trades_count': 0}