[업비트 OpenAPI] Open API 샘플 코드 (in Python) – Exchange API




업비트 Open API Reference 문서를 참고하여 Python으로 API 호출 코드를 작성해 보고 Exchange API 호출 테스트한 내용을 정리 합니다.

테스트에 사용된 기본 코드 구조는 아래 글을 참고하면 됩니다.

[업비트 OpenAPI] 기본 개발 가이드 정리 및 샘플 코드 (in Python)

API 구분별 함수 코드만 작성하고 테스트 결과를 나열 합니다.


자산

전체 계좌 조회

내가 보유한 자산 리스트를 보여줍니다.

# 자산 - 전체 계좌 조회
def GetAccounts(self):
    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.get(self.server_url + '/v1/accounts', headers=headers)

    ret = res.json()

    return ret

주문

주문 가능 정보

마켓별 주문 가능 정보를 확인합니다.

# 주문 - 주문 가능 정보
def GetOrdersChance(self, market):
    query = {
        'market': market,
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.get(self.server_url + "/v1/orders/chance",
                        params=query, headers=headers)

    ret = res.json()

    return ret

개별 주문 조회

주문 UUID를 통해 개별 주문건을 조회합니다.

# 주문 - 개별 주문 조회
def GetOrder(self):
    query = {
        'uuid': '9ca023a5-851b-4fec-9f0a-48cd83c2eaae',
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.get(self.server_url + "/v1/order", params=query, headers=headers)

    ret = res.json()

    return ret

주문 리스트 조회

주문 리스트를 조회합니다.

# 주문 - 주문 리스트 조회
def GetOrders(self, uuids):
    query = {
        'state': 'wait',
    }
    query_string = urlencode(query)

    uuids = [
        '9ca023a5-851b-4fec-9f0a-48cd83c2eaae',
        # ...
    ]
    uuids_query_string = '&'.join(["uuids[]={}".format(uuid) for uuid in uuids])

    query['uuids[]'] = uuids
    query_string = "{0}&{1}".format(query_string, uuids_query_string).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.get(self.server_url + "/v1/orders", params=query, headers=headers)

    ret = res.json()

    return ret

주문 취소 접수

주문 UUID를 통해 해당 주문에 대한 취소 접수를 합니다.

# 주문 - 주문 취소 접수
def DeleteOrder(self, uuid):
    query = {
        'uuid': uuid,
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.delete(self.server_url + "/v1/order", params=query, headers=headers)

    ret = res.json()

    return ret

주문하기(Buy) : 지정가

지정가로 매수 주문을 요청 합니다.

# 주문 - 주문하기(Buy) : 지정가
def PostOrders_Buy(self, market, volume, price):
    query = {
        'market': market,
        'side': 'bid',
        'volume': volume,
        'price': price,
        'ord_type': 'limit',
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.post(self.server_url + "/v1/orders", params=query, headers=headers)

    ret = res.json()

    return ret

주문하기(Buy) : 시장가

시장가로 매수 주문을 요청 합니다.

# 주문 - 주문하기(Buy) : 시장가
def PostOrders_Buy_Auto(self, market, price):
    query = {
        'market': market,
        'side': 'bid',
        'price': price,
        'ord_type': 'price',
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.post(self.server_url + "/v1/orders", params=query, headers=headers)

    ret = res.json()

    return ret

주문하기(Sell) : 지정가

지정가로 매도 주문을 요청합니다.

# 주문 - 주문하기(Sell) : 지정가
def PostOrders_Sell(self, market, volume, price):
    query = {
        'market': market,
        'side': 'ask',
        'volume': volume,
        'price': price,
        'ord_type': 'limit',
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.post(self.server_url + "/v1/orders", params=query, headers=headers)

    ret = res.json()

    return ret

주문하기(Sell) : 시장가

시장가로 매도 주문을 요청합니다.

# 주문 - 주문하기(Sell) : 시장가
def PostOrders_Sell_Auto(self, market, volume):
    query = {
        'market': market,
        'side': 'ask',
        'volume': volume,
        'ord_type': 'market',
    }
    query_string = urlencode(query).encode()

    m = hashlib.sha512()
    m.update(query_string)
    query_hash = m.hexdigest()

    payload = {
        'access_key': self.access_key,
        'nonce': str(uuid.uuid4()),
        'query_hash': query_hash,
        'query_hash_alg': 'SHA512',
    }

    jwt_token = jwt.encode(payload, self.secret_key)
    authorize_token = 'Bearer {}'.format(jwt_token)
    headers = {"Authorization": authorize_token}

    res = requests.post(self.server_url + "/v1/orders", params=query, headers=headers)

    ret = res.json()

    return ret



Leave a Comment