본문 바로가기
IT종합/암호화폐

ccxt 모듈과 binance api를 이용해 암호화폐 잔액 불러오기 - python, (해결 x)

by 우동이 2025. 5. 13.
300x250

오늘의 글은 ccxt 모듈과 binance에서 제공된 api key값을 활용해

현재 내 거래소의 코인 잔액을 불러와보는 기능을 구현해보겠습니다.

 

import ccxt

 

CCXT(CryptoCurrency eXchange Trading Library)

암호화폐 거래 라이브러리

JavaScript, Python, PHP를 지원합니다.

 

CCXT에서는 국내 화폐거래소인 업비트의 Open API를  2018-11-30일자부터

제공하기 시작했습니다.

UPbit Open API

 

 

또한 기존의 Binance, Bitfinex, Bittrex, Kraken, The Ocean과 UPbit 등 

총 6개의 거래소에서 CCXT 인증배지를 보유하고 있습니다.

 

2022년 10월 전까지는 유료 버전의 웹소켓 기능이

무료화 되어 암호화폐 실시간 데이터처리 또한 가능해졌다고 합니다.

 

pip install ccxt

 

ccxt 는 별도의 설치가 필요한 외장 라이브러리입니다.

 


 

설치가 완료되었다면 

ccxt에 대한 간단한 사용법을 익히고 가는게 좋을것 같습니다.

 

개인적인 습관이 있다면

모르는 라이브러리를 사용해야 한다면 

먼저 dir(), help()를 사용해보곤 합니다.

 

import ccxt
print(dir(ccxt))

 

dir()은 파이썬의 내장함수로 객체를 인자로 받고

객체에 들어있는 변수와 메소드를 전부 반환합니다.

 

즉 위 코드는 ccxt가 가지고 있는 모든 변수와 메소드를 반환합니다.

 

 

잘 보일지 몰라서 확대해봤습니다.

 

 

여러가지 값이 보이는데

익숙한 거래소의 이름이 보인다 한들

이 메서드들이 정확히 무슨기능을 하는지 모를것이기에

 

추가로 help()를 사용해줍니다.

 

import ccxt
print(dir(ccxt))
print(help(ccxt.upbit))

 

help() 역시 python의 내장함수로써 

인자로 보낸 객체의 함수나 메서드의 도움말과 기능을 반환합니다.

 

가장 익숙한 화패거래소 upbit 객체의 도움말을 확인해봅시다.

 

help(ccxt.upbit)

 

class upbit의 모든 메서드와 사용법에 대한 설명입니다.

당연하게도 전부 영어로 제공되는 터라 

정확한 이해를 위해선 더 시간을 들여야 합니다만

 

더 빠른 이해를 위해 각 거래소 api 사용법이 담긴 

document 링크를 넣어뒀으니 참고하시면 좋을것 같습니다.

 

https://global-docs.upbit.com/reference/closed-order

 

Query Closed Orders

Request Parameters 📘 Request Closed(done, cancel) Orders: To request an Order List using uuid or identifiers use v1/orders/uuids For Open(wait) Orders use v1/orders/open Name Description Type market Market ID String state Order State done : all complete

global-docs.upbit.com

 

해당 링크는 ccxt의 upbit class에 기재된 docs 링크입니다.

 

help(ccxt.binance)

 

바이낸스에 대한 ccxt 라이브러리 사용법또한 

동일하게 출력되며 역시 docs 링크를 남겨줍니다.

 

https://developers.binance.com/docs/derivatives/usds-margined-futures/trade/rest-api/Modify-Isolated-Position-Margin

 

Modify Isolated Position Margin | Binance Open Platform

API Description

developers.binance.com

 

모르는 python 라이브러리의 사용법을 독학한다면

레딧이나 티스토리를 뒤질 필요없이 이런 방법으로 배우는게 훨씬 효율적이고 좋습니다.

 


 

import ccxt

with open("key/binance_key.txt") as f:
    lines = f.readlines()
    api_key = lines[0].strip()
    secret_key = lines[1].strip()

exchange = ccxt.binance(config={
    'apiKey' : api_key,
    'secret' : secret_key,
    'enableRateLimit': True
    }
)

balance = exchange.fetch_balance()
usdt_balance = balance['USDT']
print('{:.5f}'.format(usdt_balance['total']))
BTC_balance = balance['BTC']
print(BTC_balance['total'])

 

 

자 이제는 바이낸스의 내 BTC, USDT의 코인 잔액을 출력해보겠습니다.

 

python with문을 통해 binance의 api key 값을 불러옵니다.

key값은 binance에 회원가입 후 api key값을 따로 받아줘야 합니다.

 

 

 

그렇게 key값을 적은 txt파일을 경로 지정해주면 됩니다.

코드 내에 key값을 바로 넣어줘도 되지만

제 경우 금방 까먹을게 분명해서 파일로 따로 만들어뒀습니다.

 

그렇게 4:6줄에서 key값을 읽고

ccxt.binance()를 통해 key값을 전달합니다.

 

with 문이 끝나면 

.fetch_balance()를 통해 내 계정의 잔액값을 받아옵니다.

그렇게 각각 USDT(Tether), BTC(Bitcoin)의 값을 출력합니다.

 

 

USDT, BTC 각각 잔액없음으로 출력되었는데

다 좋았는데 뭔가가 이상하다고 느껴지는게

 

 

 

BTC는 보유하고 있지 않지만

USDT의 경우에는 0.001의 보유량이 있기 때문입니다.

0.001 USDT는 0.001$, 원화로는 1.4원인데

극히 소액이라 확인되지 않는걸까 궁금하네요

일부러 소수점 자리 수까지 출력해봤는데 아예 보이지 않는걸 보면

뭐가 문제인지는 잘 모르겠습니다.

 

이에 대한 문제는 좀더 시도해보고 해결되면 다시 올리겠습니다.

 

 

300x250

댓글