차밍이

[Bithumb API] 빗썸 API 자동매매 - 2 - 거래소 정보 가져오기 본문

블록체인/빗썸 자동매매

[Bithumb API] 빗썸 API 자동매매 - 2 - 거래소 정보 가져오기

2021. 3. 28. 15:55
반응형

목차

     

     

    Bithumb 거래소에서 가상자산의 데이터를 가져와보자.

    0. 빗썸 API 연결하기

    이전 글을 참고하여 자신의 빗썸 계정의 API KEY를 발급받도록 한다.

    [Bithumb API] 빗썸 API 자동매매 - 1 - API 신청 및 연결

     

    [Bithumb API] 빗썸 API 자동매매 - 1 - API 신청 및 연결

    요즘 주식 시장을 넘어 코인 시장에도 활기가 가득하다. 다양한 언어를 사용해서 거래소의 API와 연동하여 자동화된 거래를 수행할 수 있다. 당분간 빗썸의 API를 사용하여 자동매매를 구현하는

    chancoding.tistory.com


    1. 빗썸 API 연결하기

    import pybithumb
    
    con_key = "81dd5f25e5daa70b2fff603901d2c09c" # 본인의 Connect Key를 입력한다.
    sec_key = "82333efegeg9eg3e77c573weg34af17a" # 본인의 Secret Key를 입력한다.
    
    bithumb = pybithumb.Bithumb(con_key, sec_key) # bithumb api에 연결한 클라스 객체를 선언한다.

    빗썸 API에 연결한 객체를 선언한다.

    이제 bithumb이라는 클래스 객체를 통해서 빗썸 api에 연결했다고 생각하면 된다.


    2. 잔고 확인하기

    a. Ticker 확인하기

    # 상장된 코인 Tickers 확인하기
    bithumb.get_tickers()
    
    >>>
    ['BTC',
     'ETH',
     'LTC',
     'ETC',
     'XRP',
     'BCH',
     'QTUM',
     'BTG',
     'EOS',
     'ICX',
     'TRX',
     'ELF',
     ... 이하 생략]

    bithumb.get_tickers()를 사용해서 상장된 코인들의 티커를 확인할 수 있다.

    티커는 모든 거래소에서 동일하게 사용하기 때문에 크게 다를 것은 없다.

    하지만, 원하는 코인이 거래소에 상장되었는지 확인하기 위할 때는 필요할 수 있다.

     

    b. 코인 잔고 확인하기

    # 잔고 확인하기
    bithumb.get_balance('BTC')
    
    >>>
    (0.04588863, 0.0, 3438133.120299, 0.0)
    # 비트코인의 총 잔고, 거래 중인 비트코인의 수량, 보유 중인 총원화, 주문에 사용된 원화

    잔고를 확인하고 싶은 코인의 ticker를 get_balance 매소드를 사용해서 확인할 수 있다.

    4개의 데이터가 튜플 형태로 출력된다.

    앞에서부터 비트코인의 총 잔고, 거래 중인 비트코인의 수량, 보유 중인 총원화, 주문에 사용된 원화가 출력된다.

    현재 가지고 있는 잔고이다.

    비트코인 보유잔고 수와 가지고 있는 원화의 값이 동일한 것을 확인할 수 있다.

     

    c. 보유중인 전체 코인의 잔고 확인하기

    # 보유중인 코인만 출력하기
    for ticker in bithumb.get_tickers():
        balance = bithumb.get_balance(ticker)
        if balance[0] != 0:
            print(ticker, " \t ", balance)
        time.sleep(0.005)
    
    >>>
    BTC        (0.04588863, 0.0, 3438133.120299, 0)
    XRP        (4.978e-05, 0.0, 3438133.120299, 0)
    BIOT        (14.498000007, 0.0, 3438133.120299, 0)
    SSX        (6.205e-05, 0.0, 3438133.120299, 0)

    get_balance의 첫번 째 튜플 값이 코인의 개수이다. 그러므로 코인 개수가 0이 아닌 것들만 골라서 출력하였다.

    전체 보유중인 코인의 수를 확인할 수 있다.

    But, 빗썸에서 확인할 수 있는 코인의 수의 종류가 조금 다른 것을 확인할 수 있다.

    이는 BTC 마켓에 상장되어있는 코인들은 여기서 확인되지 않는 것으로 보인다.

    tickers = bithumb.get_tickers() # Default가 'KRW' 이다.
    print('MVC' in tickers)
    
    tickers = bithumb.get_tickers('BTC')
    print('MVC' in tickers)
    >>>
    False
    True

    get_tickers에서 ticker를 가져오는 시장이 다르게 설정되었기 때문이다.

    기본값이 KRW원화 마켓이다.

    이 값을 BTC로 바꿔주면 BTC마켓에서 거래할 수 있는 티커들이 출력된다.

    마일벌스 라는 코인의 티커를 통해서 확인해볼 수 있다.


     

    3. 주문하기

    a. 지정가 주문 넣기

    # buy_limit_order() 메서드의 파라미터로 구매하고자 하는 가상화폐의 
    # 티커, 지정가, 매수 수량을 순서대로 입력합니다
    order = bithumb.buy_limit_order("BTC", 39000000, 0.001)
    print(order)
    
    >>>
    ('bid', 'BTC', 'C0101000000322993432', 'KRW')

     

    주문을 넣기 위해서 buy_limit_order 메소드를 사용한다.

    매수 주문을 넣을 코인의 ticker, 가격, 개수, 화폐를 선택한다.

     

    매수 주문의 결과를 확인할 수 있다.

    return에 나와있듯 주문type, 주문코인명, 주문ID, 지불 화폐 순서로 출력된다.

    실제 빗썸에서 거래가 어떻게 되었는지 확인해보자.

    내가 실행한 명령은 지정가 매수주문 3900만원에 0.001개의 비트코인 으로 설정하였다.

    현재 비트코인의 시세가 6600만원을 넘어가니 당연히 매수되지는 않았을 것이다.

    실제 빗썸에서 미체결 주문을 확인하면 실행한 코드의 결과가 잘 들어간 것을 확인할 수 있다.

     

    bithumb.get_balance('BTC')
    >>>
    (0.04588863, 0.0, 3438133.120299, 39098.5)

    get_balance를 통해 지정가 주문이 들어간 금액만큼 매수에 사용된 원화의 값이 확인된다. 39098.5에 해당된다.

     

    b. 주문 취소하기

    cancel = bithumb.cancel_order(order)
    print(cancel)
    >>>
    True

    cancel_order를 통해서 주문을 취소할 수 있다.

    cancel_order 메소드 안에 들어가는 order은 앞에서 만들었던 지정가 주문 order에 해당한다.

    넣었던 주문을 취소하는 것으로 생각하면 된다.

     

     

     

     

     


    4. 호가창 Order Book 살펴보기

    orderbook = pybithumb.get_orderbook('BTC')
    orderbook
    
    >>>
    {'timestamp': '1616913007272',
     'payment_currency': 'KRW',
     'order_currency': 'BTC',
     'bids': [{'price': 66883000.0, 'quantity': 0.0951},
      {'price': 66881000.0, 'quantity': 0.0607},
      {'price': 66880000.0, 'quantity': 0.503},
      {'price': 66878000.0, 'quantity': 0.0415},
      {'price': 66868000.0, 'quantity': 0.0293}],
     'asks': [{'price': 66919000.0, 'quantity': 0.9946},
      {'price': 66927000.0, 'quantity': 0.002},
      {'price': 66936000.0, 'quantity': 0.0382},
      {'price': 66937000.0, 'quantity': 0.1541},
      {'price': 66939000.0, 'quantity': 0.188}]}

    실행과 스샷을 동시에 찍으려고 노력했는데 실패했다.

     

    Ask/Bid 가격

    Bid 가격은 매수자가 기꺼이 지불하려고 하는 최대 금액이다.

    즉, 매수자가 매수하기위해 매수 호가창에 주문을 걸어놓은 가격이다.

    Ask 가격은 판매자가 판매하고자 하는 최소 금액이다.

    즉, 코인 판매자가 팔고자 하는 특정 코인을 판매하기위해 매도 호가창에 올려놓은 가격이다.

    Ask 가격은 항상 Bid 가격보다 약간 높다.

     

     

     

     

     

     


    5. 최소 주문 수량

    빗썸에서의 최소 주문 수량은 위의 사진과 같다.

    최소 주문 수량과 유효 자릿수를 만족하게 주문을 넣어야한다.

    그렇지 않으면 실패한다.

    Reference : 파이썬을 이용한 비트코인 자동매매 - 조대표 - 위키독스 오픈 자료 활용

    https://wikidocs.net/book/1665

    반응형

    관련된 글 보기

    Comments