목 차
1. 들어가며
2. 사전설명
3. 코드설명
4. 전체 코드 및 결과
5. 마치며
1. 들어가며
지난 글에서는 잔고조회 방법을 알아보았다.
현재가와 매수가의 비교를 통해 매수/매도 등의 수익/손절을 진행하기 위해서이다.
이번 글에서는 보유하고 있는 투자가능금액 조회하는 방법을 알아보자
투자를 위해 사용자에게 필요한 개념은
"계좌 잔고"가 아닌 "투자가능금액"이다.
<그림1>의 계좌잔고 Equity 0.00279712 BTC이고
투자가능금액 Available Balance 0.00004844 BTC이다.
2. 사전설명
바이비트API 설명서를 확인해보자.
<그림2>에서 확인하였듯이 입력 내용은 "코인명"이고
"출력명"이 투자가능금액(available_balance)이다.
① 설명 경로 : Wallet Data Endpoints > Get Wallet Ballance
② 입력 : 사용자가 알고 싶은 코인명을 기재한다.
※ 여기서 주의할 것은 심볼명이 아니라는 것이다.
Coin명을 "BTC"로 기재한다.
Symbol명은 "BTCUSD"인데, 여기서는 "BTC"로 표기한다.
③ 출력 : 투자가능금액(available_balane)을 수신받는다.
④ 입력 코드 방법 : api_key 및 api_secrect를 입력한다.
⑤ 출력 받는 내용 : 딕셔너리 - 딕셔너리 - 딕셔너리 형태를 확인한다.
3. 코드 설명
pybit 모듈을 활용하여 API KEY 및 API SECRET를 활용하여
바이비트API 접근하여 투자가능금액을 받아온다.
1줄 : 11줄~14줄에서 계좌정보를 접근하기 위해 pybit모듈을 임프트한다.
2줄 : 23줄에서 현재시간을 GMT시간으로 출력하기 위해 datetime모듈을 임포트한다.
4줄~7줄 : 사용자 pc에 저장된 api_key 및 api_secret을 읽어온다.
9줄 : 임의의 함수를 선언하고, 35줄의 Coin명의 "BTC" 입력하기 위한
변수 coin_name 자리에 넣어준다.
11줄~14줄 : api_key 및 api_secret 입력을 통해 바이비트api 접근하여 데이터를 받아온다.
17줄 : 받아온 데이터를 resp에 인스턴스화 시킨다.
19줄~23줄 : <그림1>의 ⑤에서 확인하였듯이 딕셔너리 > 딕셔너리 > 딕셔너리 형태이다.
19줄 : 투자가능금액은 받아온다. resp ['result'] ['BTC'] ['available_balane'] 로 받아온다.
* 딕셔너리 형태는 문자형(result, BTC, available_balance)으로 받아온다.
20줄 : 실현 손익 (realised_pnl)
20줄 : 미실현 손익(unrealised_pnl)
22줄 : 이 부분에서 약간 헤맸다.
시간 데이터는 resp의 time_now로 받아온다.
float형으로 받아오고나서, 정수화(int형)시켜서 마이크로 초를 버린다.
23줄 : 2줄의 datetime모듈을 활용하여 GMT로 변환한다.
25줄~28줄 : 투자가능금액, 실현/미실현 손익, 현재시간을 출력한다.
30줄 : 9줄의 avail_balance의 함수는 "BTC"를 넣어서 실행한다.
4. 전체 코드 및 결과
from pybit.inverse_perpetual import HTTP
import datetime as dt
with open(r'C:\...\bybit.key.txt') as f:
lines = f.readlines()
api_key = lines[0].strip()
api_secret = lines[1].strip()
def avail_balance(coin_name):
session = HTTP(
endpoint="https://api.bybit.com",
api_key=api_key,
api_secret=api_secret
)
resp = session.get_wallet_balance(coin = coin_name)
available_balance = resp["result"]["BTC"]["available_balance"] # float 형으로 출력됨
realised_pnl = resp["result"]["BTC"]["realised_pnl"] # float 형으로 출력됨
unrealised_pnl = resp["result"]["BTC"]["unrealised_pnl"] # float 형으로 출력됨
time_now = int(float(resp["time_now"]))
time_now = dt.datetime.fromtimestamp(time_now)
print(available_balance)
print(realised_pnl)
print(unrealised_pnl)
print(time_now)
avail_balance("BTC")
# (expected result)
# 0.00283091
# 0.00010092
# 0
# 2022-11-05 15:25:15
5. 마치며
투자가능금액은 이후에 설명할 진입을 할 때,
수량 계산을 할 때 쓰인다.
또한, 위에서 설명한 실현/미실현 손익은
프로그램을 돌릴 때 거래가 있은 후의 출력을 통해
거래후의 수익/손실 등을 알 수 있다.
지금까지 투자가능금액 조회하는 방법을 알아보았다.
다음 글에서는 투자가능금액을 활용한 long/short 진입량 계산하는 방법을 알아보자.
'3. 비트코인 선물 > 3-1. 바이비트 선물 연구일지' 카테고리의 다른 글
(비트코인 자동매매API) (10) 미체결 주문내역 취소하기 (0) | 2022.11.13 |
---|---|
(비트코인 자동매매API) (9) 미체결 주문내역 조회하기 (0) | 2022.11.12 |
(비트코인 자동매매API) (8) 비트코인 진입/청산 주문하기 (0) | 2022.11.11 |
(비트코인 자동매매API) (7) 비트코인 주문량 계산하기 (0) | 2022.11.09 |
(비트코인 자동매매API) (5) 계좌잔고 조회하기 (0) | 2022.11.07 |
(비트코인 자동매매API) (4) 1분봉으로 진입을 위한 패턴 만들기 (0) | 2022.11.03 |
(비트코인 자동매매API) (3) 비트코인 최신 데이터(현재가) 받기 (0) | 2022.11.01 |
(비트코인 자동매매API) (2) 30일 분량의 비트코인 1분봉 받는 시간 비교 (0) | 2022.10.30 |