반응형
업비트 API 중 주문 리스트 조회하기가 있습니다.
예시가 전부 UUID가 필요한 줄 알았지만 주문 리스트 조회는 UUID 없이 확인하는 형태입니다.
업비트 API를 통해 확인 가능한 내용은 아래 표와 같습니다. (Request Parameters)
필드 | 설명 |
uuid | 주문의 고유 아이디 |
side | 주문 종류 |
ord_type | 주문 방식 |
price | 주문 당시 화폐 가격 |
state | 주문 상태 |
market | 마켓의 유일키 |
created_at | 주문 생성 시간 |
volume | 사용자가 입력한 주문 양 |
remaining_volume | 체결 후 남은 주문 양 |
reserved_fee | 수수료로 예약된 비용 |
remaining_fee | 남은 수수료 |
paid_fee | 사용된 수수료 |
locked | 거래에 사용중인 비용 |
executed_volume | 체결된 양 |
trade_count | 해당 주문에 걸린 체결 수 |
※ 시장가격으로 거래했다면 주문 당시 화폐 가격을 확인할 수 없습니다.
※ 하지만 사용된 수수료를 통해서 역으로 계산할 수 있긴 합니다.
※ UUID를 사용하여 개별 주문 조회를 하면 알 수도 있습니다.
Request Parameters (Query 내용)
해당 부분은 검색하는 조건이라고 생각하시면 편합니다.
Name | 설명 |
market | 마켓 아이디 |
state | 주문 상태 - wait : 체결 대기 (default) - watch : 예약주문 대기 - done : 전체 체결 완료 - cancel : 주문 취소 |
page | 페이지 수, default: 1 |
limit | 요청 개수, default: 100 |
※ 줄 쳐둔 것은 제가 만든 코드에 쿼리가 포함 안되게 되어있습니다.
※ 최대한 업비트 API 문서에 있는 것과 비슷하게 작성하였습니다.
※ Query는 적어도 1개 이상 필요합니다.
코드
VBA 실행 전 레퍼런스를 체크하셔야 합니다.
※ 도구 > 참조 메뉴
Sub Orderlist()
Dim query As New Dictionary
Dim DHeader As New Dictionary
Dim Dpayload As New Dictionary
access_key = ""
secret_key = ""
server_url = "https://api.upbit.com"
'query 입력하는 부분
query.Add "state", "done"
query.Add "market", "KRW-XRP"
query.Add "page", "3"
query_string = urlencode(query, False)
query_hash = to_SHA512(query_string)
DHeader.Add "alg", "HS256"
DHeader.Add "typ", "JWT"
Header = EncodeBase64("{" & urlencode(DHeader, True) & "}")
Dpayload.Add "access_key", access_key
Dpayload.Add "nonce", Int(100000000 + Rnd() * 100000000)
Dpayload.Add "query_hash", query_hash
Dpayload.Add "query_hash_alg", "SHA512"
payload = EncodeBase64("{" & urlencode(Dpayload, True) & "}")
Signature = Base64_HMACSHA256(Header & "." & payload, secret_key)
jwt_token = Header & "." & payload & "." & Signature
authorize_token = "Bearer " & jwt_token
Dim wh As New WinHttp.WinHttpRequest
Url = server_url & "/v1/orders?" & query_string
wh.Open "get", Url
wh.SetRequestHeader "authorization", authorize_token
wh.Send
resultText = Replace(Replace(wh.ResponseText, "},{", "\"), """", "")
resultText = Mid(resultText, 3, Len(resultText) - 3)
resultText = Split(resultText, "\")
For Each i In resultText
rcnt = rcnt + 1
Cells(rcnt, 1) = i
Next
End Sub
Function urlencode(query As Dictionary, JWT As Boolean)
Dim dr()
If JWT = False Then
con1 = "="
con2 = "&"
Else
con1 = ":"
con2 = ","
End If
For Each Key In query
rcnt = rcnt + 1
ReDim Preserve dr(0 To rcnt - 1)
If JWT = True Then
dr(rcnt - 1) = """" & Key & """" & con1 & """" & query(Key) & """"
Else
dr(rcnt - 1) = Key & con1 & query(Key)
End If
Next
result = Join(dr, con2)
urlencode = result
End Function
to_SHA512 코드
EncodeBase64 & Base64_HMACSHA256
해당 VBA를 실행하면 아래 이미지와 같이 엄청 복잡한 글자들이 나타납니다.
이제 A열 선택 후 텍스트 나누기를 누릅니다.
그리고 구분 기호로 분리됨을 선택 후 쉼표 체크 후 다음
그리고 마침을 선택합니다.
이런식으로 모든값들을 정리할 수 있습니다.
Page를 변경하면서 정리하시면 과거까지 다 확인 가능합니다.
반응형
'코인 > 업비트API' 카테고리의 다른 글
업비트 API 연결하여 모든 내 거래내역 CSV 저장 프로그램 - 오토핫키 (4) | 2021.08.27 |
---|---|
업비트 거래 수수료 절약하기 API 연결 후 예약주문 프로그램 (0) | 2021.06.28 |
VBA에서 regexmatch(정규식) 를 이용한 코인 거래소 API 파싱하기 (0) | 2021.06.17 |
코인 거래소 (업비트 코인원 빗썸 등) API 엑셀 파싱 사용하기 - VBA json 파싱 (1) | 2021.05.16 |
엑셀 업비트 API 실시간 캔들값 엑셀 파일 자동 갱신 - VBA (23) | 2021.05.12 |
댓글