서론
최종적으로 엑셀과 VBA를 활용하여 업비트 코인을 구매할 수 있는 시스템을 만들고 싶습니다.
업비트에서 제공하는 웹사이트 기능보다 더 빨리 더 많이 내가 필요한 정보만 추출해서 여러 코인을 한 번에 빠르게 처리하는 게 목표입니다.
목표를 향해 가기 위해서는 일단 제가 보유한 코인을 정리해야겠죠?
그리고 제가 보유한 코인이 현재 시세가 어느 정도인지 확인도 필요하겠네요
currency | 화폐를 의미하는 영문 대문자 코드 | String |
balance | 주문가능 금액/수량 | NumberString |
locked | 주문 중 묶여있는 금액/수량 | NumberString |
avg_buy_price | 매수평균가 | NumberString |
avg_buy_price_modified | 매수평균가 수정 여부 | Boolean |
unit_currency | 평단가 기준 화폐 | String |
이런 정보들이 있습니다. 현재 시세는 없군요.
현재 시세는 내 보유 코인을 정리한 후 별도로 추가할 예정입니다.
구매 기준까지 적용해서 엑셀에 합쳐서 자동화 및 간편 시스템을 만들겠습니다.
본론 - 내 보유 코인 정리
또 역시나 업비트 API를 찾습니다.
그리고 인증 가능한 요청 만들기가 있습니다.
해당 내용을 보고 따라 하였습니다.
일단 access key와 secret key로 토큰을 만들어서 authorization 헤더를 통해 전송한답니다.
무슨 소리인지 잘 모르겠지만 일단 access key와 secret key를 만들어야겠네요.
이것은 업비트의 open api 사용하기를 통해서 발급받을 수 있습니다.
업비트 - 가장 신뢰받는 디지털 자산 거래소 (upbit.com)
여기 들어가셔서 신청하시면 됩니다.
신청하실 때 IP주소는 초록창 검색에서 ip주소라고 치면 나옵니다~ 그 IP를 입력하셔야 합니다.
그러면 access key와 secret key를 알려줍니다.
그것을 이용해서 이제 토큰을 만들러 갑니다~
https://jwt.io라는 사이트를 통해서 토큰을 만듭니다.
이것도 업비트 api 가이드 사이트에 링크가 되어있습니다. (제가 만들거나 그런 게 아니에요~)
서명 방식은 HS256을 권장한다고 합니다. 그래서 해당 사이트에서 HS256을 선택했습니다.
그리고 JWT에 대해서는 더 상세하게 작성하기에는 제 지식이 부족하여 그냥 시키는 데로만 했습니다.
1번에는
"access_key": "발급받은 acccess key (필수)", "nonce": "무작위의 UUID 문자열 (필수)" 이렇게 입력합니다.
위아래 존재하는 { }도 반드시 필요합니다.
만약 잘못 작성되면 붉은색으로 표시가 나오기 때문에 그때 수정하셔도 됩니다.
발급받은 access key를 입력하시면 됩니다.
예를 들면 "access_key": "89 aeh894 jagj98 gh98 as" 이런 식으로 말이죠 따옴표도 적어야 합니다.
그리고 nonce는 uuid 무작위라고 되어있는데요 무작위로 10자리 정도 숫자로 입력해도 됩니다.
예를 들면 "nonce" : "2021040411" 이런 식으로 말이죠 역시나 따옴표 필요합니다.
그리고
②에는 업비트에서 발급받은 secret_key를 입력해주시면 됩니다.
※ 클릭해도 적혀있는 your-256-bit-secret이 지워지지 않기 때문에 잘 확인하시고 붙여 넣으세요~
그리고 아래 체크는 필요 없습니다.
Encoded에 나온 값만 저는 사용하게 됩니다. 막 이상한 값이 나옵니다.
그걸 엑셀에 넣습니다. (첨부된 파일에 넣는 위치가 있습니다.)
그렇게 하면 지갑 관련된 내용은 불러올 수 있습니다.
이제 앞서 이야기했던 헤더로 전송하면 되니 전송하는 코드를 작성해보겠습니다.
다른 언어는 jwt를 만들어주는 코드가 간략한데 VBA에서는 어떻게 만드는지 몰라서 그냥 업비트가 알려준 사이트에서
만들어 붙였기 때문에 레퍼런스보다 간략한 코드가 되었네요 물론 파싱 부분의 추가로 결과적으론 더 길어졌습니다
그리고 이제 해당 언어를 파싱 하여 엑셀에 뿌려주는 일만 남았습니다.
파싱은 규칙을 이해하고 만들어내면 됩니다.
Sub TotalCoin()
Dim IE As New WinHttp.WinHttpRequest
Range("a5:f1000").ClearContents
IE.Open "GET", "https://api.upbit.com/v1/accounts"
IE.SetRequestHeader "authorization", "Bearer " & Range("b1")
IE.Send
IE.WaitForResponse
res = Split(IE.ResponseText, "}")
For Each Coin In res
CoinType = Split(Coin, ",")
rcnt = rcnt + 1
ccnt = 0
For Each Dvalue In CoinType
If Dvalue = "" Or UBound(CoinType) = 0 Then
Else
RValue = Split(Dvalue, ":")
ccnt = ccnt + 1
Cells(rcnt + 4, ccnt) = RValue(1)
End If
Next
Next
End Sub
완성된 코드입니다.
물론 그냥 엑셀 파일만 사용하시는 게 더 편하시겠지만 보시고 비교 , 분석하실 분은 비교 분석하시면 될 것 같습니다.
업비트 API와 비교 분석이겠죠?
참 지갑 조회를 했는데
{"message" "jwt_decode"
이런 게 나온다면 jwt 코드를 잘 못 만든 거기 때문에 다시 사이트에 가셔서 정확히 만드시면 됩니다~!
또 공부를 더해서 이제 시세와 필요한 정보들을 붙여서 돌아오겠습니다.
2021년 4월 19일 추가 내용
며칠간 고생해서 JWT를 VBA로 생성하게 만들었습니다.
그리고 기존에 코드에 추가를 했습니다.
그래서 해당 엑셀을 다운로드하시면 간편하게 access_key와 secret_key를 셀에 입력하시면 바로 사용하실 수 있습니다.
vba로 jwt 만들기 , 만드는 방법 - hs256 (tistory.com)
여기서 jwt 만드는 방법도 공부하실 수 있습니다.
access_key와 secret_key에 업비트에서 지급받은 코드를 넣고 지갑 조회 버튼을 누르시면 조회됩니다.
jwt가 vba로 생성 가능하니 편리하게 되네요
이제 코인을 구매하고 판매하는 것도 조만간
추가해보겠습니다.
'코인 > 업비트API' 카테고리의 다른 글
업비트 연속 양봉 또는 음봉 일 때 핸드폰 알람 프로그램 - 오토핫키+텔레그램 (1) | 2021.05.01 |
---|---|
업비트 코인원 빗썸 현재 가격 정리 및 가격 비교 엑셀 - VBA (17) | 2021.04.27 |
API사용 업비트 와 글로벌 시세(BITFINEX) 시세 함께 확인하기 - VBA , 엑셀 (0) | 2021.04.22 |
업비트 api 활용 모든 코인 시세 정리하기 - VBA (2) | 2021.04.14 |
업비트 api 활용하여 코인 시세 확인하기 - 오토핫키 (0) | 2021.04.13 |
댓글