지난 편에서 코인봇으로 부자가 되는 서막을 알렸습니다.
저는 코인봇 개발에 대한 장대한 목표와 구체적인 계획을 세웠습니다.
동료가 있을지는 모르겠습니다. 동료가 되실 분은 좋아요를 눌러주세요.
저의 마음은 이미 두근대기 시작했습니다.
바로 시작하겠습니다.
오늘은,
파이썬으로 업비트 Open API에 연결하여 잔고 조회하는 방법
을 알아보고 실행해보겠습니다. 저만 따라 오시면 함께 부자 되실 수 있습니다.
다만, 준비된 자만이 기회를 잡을 수 있습니다.
사전 준비물을 안내드리겠습니다.
사전 준비
1. 파이썬의 기초
2. 주피터 노트북
3. 나는 할 수 있다 라는 믿음
준비 되셨으면 시작하겠습니다.
업비트에 들어갑니다.
슬픈 저의 계좌가 제 눈 앞을 가립니다.
조금만 기다려.. 내가.. 따따블 아니 따따따따블로 만들어 줄게..!!
살펴보기
업비트에 로그인하시고, 새벽 두시네요^^
고객센터 >> Open API 안내 로 이동합니다.
업비트 개발자 센터로 가봅니다.
저는 아직 "개발자" 라는 말이 멋있습니다.
자, 겟 스타리드 눌러줍니다.
시작되었습니다.
자 바로 API Reference로 가줍니다.
뭐든지, 나보다 더 똑똑한 사람들이 이미 생각해서 만들어 놓았습니다. 뭐든지요.
API Reference에 가면 처음으로 나오는녀석입니다.
자산>>전체계좌 조회
살펴보겠습니다. 아래 주석을 봐주세요.
계좌를 조회하기 위해 관련된 라이브러리를 먼저 설치해 줍시다.
터미널에서 설치하든 주피터에서 설치하든 아나콘다 가상환경을 만들어 설치하든 설치해 줍시다.
#라이브러리 설치가 필요하겠습니다.
import os
import jwt #pip install PyJWT
import uuid #pip install uuid
import hashlib #pip install hashlib
from urllib.parse import urlencode
import requests
#urllib, 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())
다음엔 뭘 해야할지 눈치챘습니다.
Upbit Open API 키를 받자.
내 파이썬에서 업비트 API를 활용하기 위해 인증하는 절차가 필요합니다.
로그인과 같은 절차라고 보면 됩니다.
저는 알파고보다 똑똑한 봇을 만들것이기 때문에 다 선택했습니다.
(봇으로 거래를 하려면 "주문하기", "출금하기" 까지 다 선택하고 IP를 입력해야함. 두가지 선택 안하면 IP입력 안함)
IP는 제 MAC의 IP를 입력했습니다.
MAC은 아래의 명령어로 IP를 알 수 있습니다. (뒤에서 말하겠지만 이것보다 네이버에서 내 IP주소 검색해서 입력하는게 확실합니다.)
mac$ ipconfig getifaddr en0
모드 체크하고 발급받기를 클릭하면 ACCESS_KEY와 SECRET_KEY를 발급해 줍니다.
Upbit Open API 키를 파이썬이 알아볼 수 있게 입력해주자.
아래를 복붙해서 실행하면, 위의 코드에서 바로 실행할 수 있게 기본 환경변수에 키를 입력해 주게 된다.
즉, 매번 실행할 필요는 없음.
import os
#기본 변수 설정
os.environ['UPBIT_OPEN_API_ACCESS_KEY'] = '당신이 받은 키를 복사해서 붙여넣기'
os.environ['UPBIT_OPEN_API_SECRET_KEY'] = '당신이 받은 키를 복사해서 붙여넣기'
그 다음 server_url을 요렇게 바꿔주자.
server_url = "https://api.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 = "https://api.upbit.com"
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())
그리고 실행해 본다.
오잉
{'error': {'message': '인증된 IP가 아닙니다.', 'name': 'no_authorization_i_p'}}
후잉..
네이버에서 내 IP 주소를 찾아보니 다른 IP가 나온다.
API 키 받은 페이지로 가서 아래로 내려가면 IP를 변경할 수 있다.
네이버에서 찾은 IP도 얹어주자.
계좌 조회 결과 확인
조회 결과를 확인할 수 있었다.
[{'currency': 'KRW', 'balance': 'xxx', 'locked': 'xxx', 'avg_buy_price': '0', 'avg_buy_price_modified': True, 'unit_currency': 'KRW'}, {'currency': 'DOGE', 'balance':..............
결과는 json 형태로 나오게끔 되어있다.
결과물에 어떤 내용이 있는지 살펴보면 다음과 같다.
필드 | 설명 | 타입 |
currency | 화폐를 의미하는 영문 대문자 코드 | String |
balance | 주문가능 금액/수량 | NumberString |
locked | 주문 중 묶여있는 금액/수량 | NumberString |
avg_buy_price | 매수평균가 | NumberString |
avg_buy_price_modified | 매수평균가 수정 여부 | Boolean |
unit_currency | 평단가 기준 화폐 | String |
내 화폐
주문가능 금액/수량
매수 평균가
평단가 기준 화폐와 같은 정보를 볼 수 있다.
여기에서는 자동 매매를 하면서 balance를 확인할 때 많이 사용할 것 같다.
특정 잔액 이하가 되면 매도를 할 때까지 매수를 멈추도록 해야 되니까.
balance만 조회하려면 아래칸에 다음과 같이 코드를 작성해 주자.
json 파일은 복잡해 보일지 몰라도 결국 list, dictionary의 조합이다.
리스트를 indexing 하고 dictionary의 Key 를 불러와 주면 된다.
그리고 텍스트로 불러와지는 녀석을 숫자로 보기 위해 float() 처리를 해준다.
data = res.json()
my_balance = float(data[0]['balance'])
my_balance
실행하면 코드를 실행했을 때 내 잔액을 조회할 수 있게되고, my_balance 라는 변수로 활용할 수가 있게 되었다.
잔액을 까기 부끄러워서 안까게 된다. 괜히.
결론과 고찰
몇 분이 채 걸리지 않아 Python 과 Upbit Open API 를 연결 시켰고, 내 계좌를 데이터화 하여 조회하였다.
그리고, Upbit OpenAPI 가이드가 정말 잘 만들어져 있다는 것을 알게 되었다.
이 게임이 시작 된 이상 이 가이드는 나의 교과서다. 어떤 내용이 있는지 완벽히 파악하고, 이를 잘 엮어야 한다.
어쨌든 오늘로써
내 자동매매 봇에 눈이 달렸다.
눈만 달렸다.
단순히 눈으로 조회하는 것만으로는 아무것도 할 수 없다.
봇이 알아서 실시간으로 시세를 조회하고, 분봉, 일봉, 거래량 등 많은 정보를 종합적으로 판단하여 자동 매매를 할 수 있게 해야 한다.
즉 상황을 판단할 수 있는 뇌와,
적절한 타이밍에 매수, 매도 할 수 있는 결단력과
이를 실행할 수 있는 손과
나에게 보고 할 수 있는 텔레파시 수단 까지 마련해 주어야 한다.
이쯤에서 내 봇에게 이름을 지어주어야 겠다.
봇..
봇하면..아이언맨.. 아이언맨 하면..
자비스.
"자 빛 스"
자 : 스스로 자 (자동으로)
빛 : 빛나는
스 : Sweet 한 코인을 쌓는 로봇
자동으로 빛나는 스윗한 코인을 쌓아서 나를 부자로 만들어줘 나의 자빛스!!!!!!
자빛스야 잘 부탁해
여기까지 읽어 주셨다면 감사합니다.
다음편에서는 업비트 openAPI 를 이용해서 뭘 할 수 있을지 분석해 보는 시간을 가져야 겠습니다.
댓글