코딩 강의/유용한 스킬 없을까요

비트코인 암호 화폐 거래소 업비트 API(파이썬) 사용 방법

아미넴 2021. 5. 16.
반응형

최근에 주식보다 비트코인이 더 핫하죠.

 

그런데 매일 신경쓰면서 거래하는 건 스트레스 받고 안 하자니 손해보는 것 같아서 프로그램 매매를 시도해 보려고 생각을 하였습니다. 요새는 주식도 그렇고 코인도 거래소마다 오픈 API 지원이 잘 되고 있어서 어렵지 않게 시도를 할 수 있었습니다.

 

윈도우를 사용하고 업비트 계정이 있는 분, 그리고 프로그래밍 언어는 파이썬 기준으로 설명을 드리겠습니다. 아직 계정이 없으신 분은 계정 생성부터 진행해 주세요.

 

목차

     

    오픈 API 키 발급받기

    먼저 업비트에서 로그인을 한 다음 업비트 오픈 API 안내 페이지로 갑니다.

     

    다음과 같은 화면이 보이면 Open API 사용하기 버튼을 누릅니다.

     

    다음 스탭도 간단합니다. API를 통해 수행하기를 원하는 항목에 체크 합니다. 특별한 목적이 있지 않다면 전체를 체크합니다. 그 다음 Open API Key 발급받기 버튼을 누릅니다. 특정IP에서만 실행 항목은 주문하기, 출금하기 사용을 위해서 필수로 체크해 주셔야 합니다.

     

    본인의 컴퓨터 IP주소는 네이버에서 다음과 같이 간단히 확인이 가능합니다.

     

    발급을 받으려면 카카오페이 인증이 필요하므로 미리 준비하시기 바랍니다.

     

    발급이 완료가 되면 Access KeySecret Key가 나오는데 Secret Key는 여기서 적어두지 않으시면 다시는 확인이 불가능 하오니 꼭 다른데 적어 두셔야 합니다. 물론 삭제하고 다시 발급하면 되니까 실수했더라도 당황하지 않습니다.

     

    장소가 바뀌거나 유동 IP를 사용하시는 분은 IP가 바뀌면 변경 버튼을 통해서 바꾸실 수 있습니다.

     

    환경변수 설정하기

    제어판 > 시스템 > 고급 시스템 설정으로 이동하여 환경 변수 버튼을 누릅니다.

     

    그리고 새로 만들기 버튼을 누릅니다.

     

    UPBIT_OPEN_API_SERVER_URL를 다음과 같이 입력합니다. 그리고 UPBIT_OPEN_API_ACCESS_KEY, UPBIT_OPEN_API_SECRET_KEY 이름으로 앞서 적어 놓았던 키 값도 등록합니다.

    그냥 소스 파일에 하드 코딩할 수도 있지만 환경 변수로 저장해 놓는 편이 보안상 안전하기도 하고 소스 코드를 작성하여 Git에 올려 공유하더라도 키가 노출될 위험을 차단할 수 있습니다.

     

    API 레퍼런스 호출 테스트

    이제 API 호출을 위한 준비는 모두 마쳤습니다. 다음 사이트에서 예제를 참고하여 호출 테스트를 해보겠습니다.

     

    업비트 API 레퍼런스

     

    업비트 개발자 센터

    업비트 Open API 사용을 위한 개발 문서를 제공 합니다.업비트 Open API 사용하여 다양한 앱과 프로그램을 제작해보세요.

    docs.upbit.com

     

    다음은 전체 계좌 정보를 가져오는 파이썬 코드입니다. 예제 소스 코드를 그대로 가져온 것입니다.

    import os
    import jwt
    import uuid
    import hashlib
    from urllib.parse import urlencode
    
    import requests
    
    access_key = os.environ['UPBIT_OPEN_API_ACCESS_KEY']
    secret_key = os.environ['UPBIT_OPEN_API_SECRET_KEY']
    server_url = os.environ['UPBIT_OPEN_API_SERVER_URL']
    
    payload = {
        'access_key': access_key,
        'nonce': str(uuid.uuid4()),
    }
    
    jwt_token = jwt.encode(payload, secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}
    
    res = requests.get(server_url + "/v1/accounts", headers=headers)
    
    print(res.json())

     

    위의 코드를 실행하여 다음과 같은 결과를 얻을 수 있습니다. 업비트 내 계좌 잔고 정보를 그대로 가져 왔습니다.

    [
       {
          "currency":"KRW",
          "balance":"123415031.775",
          "locked":"0.0",
          "avg_buy_price":"0",
          "avg_buy_price_modified":true,
          "unit_currency":"KRW"
       },
       {
          "currency":"ADA",
          "balance":"10000.0",
          "locked":"0.0",
          "avg_buy_price":"1000",
          "avg_buy_price_modified":false,
          "unit_currency":"KRW"
       }
    ]

     

    이런 방식으로 정보를 얻어와서 프로그램 매매에 활용을 할 수 있습니다.

    다음 포스팅에서는 라이브러리를 이용하여 좀 더 간편한 방법으로 API를 호출할 수 있는 방법에 대해 알아보겠습니다.

     

    (내용 추가 2021.06.10)

    pyupbit 라이브러리를 통한 비트코인 암호 화폐 거래소 API 사용 방법

     

    pyupbit 라이브러리를 통한 비트코인 암호 화폐 거래소 API 사용 방법

    오늘은 pyupbit 라이브러리를 이용하여 업비트에서 제공하는 API를 좀 더 손쉽게 사용하는 방법을 알아 보겠습니다. 고마운 분들이 API를 사용하기 편리하게 만들어 놓았습니다. 우리는 그냥 가져

    sangminem.tistory.com

    감사합니다.

    반응형

    댓글

    💲 추천 글