API Reference
HTTP Method | API URL |
POST | https://api.upbit.com/v1/orders |
BODY PARAMS
필드명 | 필수 여부 | 설명 | 타입 |
market | Y | Market ID | String |
side | Y | 주문 종류 | String |
volume | Y | 주문 수량 | String |
price | Y | 유닛당 주문 가격 | String |
ord_type | Y | 주문 타입 | String |
identifier | N | 조회용 사용자 지정 값 | String |
HEADERS
헤더명 | 필수 여부 | 설명 | 타입 |
Authorization | Y | Authorization token (JWT) | String |
Request Parameters
필드명 | 설명 | 타입 |
market | 마켓 ID | String |
side |
주문 종류 ■ bid : 매수 ■ ask : 매도 |
String |
volume | 주문량 | NumberString |
price | 주문 가격 | NumberString |
ord_type |
주문 타입 ■ limit : 지정가 주문 ■ price : 시장가 주문(매수) ■ market : 시장가 주문(매도) |
String |
identifier | 조회용 사용자 지정값 | String |
◆ 원화 마켓 가격 단위를 확인하세요.
원화 마켓에서 주문을 요청 할 경우, 원화 마켓 주문 가격 단위 를 확인하여 값을 입력해주세요.
◆ identifier 파라미터 사용
identifier는 서비스에서 발급하는 uuid가 아닌 이용자가 직접 발급하는 키값으로, 주문을 조회하기 위해 할당하는 값입니다. 해당 값은 사용자의 전체 주문 내 유일한 값을 전달해야하며, 비록 주문 요청시 오류가 발생하더라도 같은 값으로 다시 요청을 보낼 수 없습니다.
주문의 성공 / 실패 여부와 관계없이 중복해서 들어온 identifier 값에서는 중복 오류가 발생하니, 매 요청시 새로운 값을 생성해주세요.
◆ 시장가 주문
시장가 주문은 ord_type 필드를 price or market 으로 설정해야됩니다.
매수 주문의 경우 ord_type을 price로 설정하고 volume을 null 혹은 제외해야됩니다.
매도 주문의 경우 ord_type을 market로 설정하고 price을 null 혹은 제외해야됩니다.
Response
필드명 | 설명 | 타입 |
uuid | 주문의 고유 아이디 | String |
side | 주문 종류 | String |
ord_type | 주문 방식 | String |
price | 주문 당시 화폐 가격 | NumberString |
state | 주문 상태 | String |
market | 마켓의 유일키 | String |
created_at | 주문 생성 시간 | String |
volume | 사용자가 입력한 주문 양 | NumberString |
remaining_volume | 체결 후 남은 주문 양 | NumberString |
reserved_fee | 수수료로 예약된 비용 | NumberString |
remaing_fee | 남은 수수료 | NumberString |
paid_fee | 사용된 수수료 | NumberString |
locked | 거래에 사용중인 비용 | NumberString |
executed_volume | 체결된 양 | NumberString |
trades_count | 해당 주문에 걸린 체결 수 | Integer |
VBA Code
Sub Upbit_Orders()
Const ACCESS_KEY As String = "UPBIT_OPEN_API_ACCESS_KEY"
Const SECRET_KEY As String = "UPBIT_OPEN_API_SECRET_KEY"
Dim WinHttp As New WinHttp.WinHttpRequest
Dim url As String, nonce As String, queryStr As String
Dim market As String, side As String, volume As String, price As String, ordType As String ', identifier As String
Dim header As String, payload As String, signature As String, jwt As String
url = "https://api.upbit.com/v1/orders"
market = "KRW-XRP"
side = "ask"
volume = "1"
price = "1000"
ordType = "limit"
'identifier = ""
queryStr = "market=" & market & "&side=" & side & "&volume=" & volume & _
"&price=" & price & "&ord_type=" & ordType '& "identifier=" & identifier
nonce = DateDiff("s", "1/1/1970", Now) & Right(Timer() * 100, 3)
header = Base64Encode(StrConv("{""alg"":""HS256"",""typ"":""JWT""}", vbFromUnicode))
payload = "{""access_key"":""" & ACCESS_KEY & """,""nonce"":""" & nonce & """,""query"":""" & queryStr & """}"
payload = Base64Encode(StrConv(payload, vbFromUnicode))
signature = Base64Encode(SHA256Encrypt(header & "." & payload, SECRET_KEY))
jwt = header & "." & payload & "." & signature
With WinHttp
.Open "POST", url
.SetRequestHeader "Authorization", "Bearer " & jwt
.SetRequestHeader "content-type", "application/json"
.Send ("{""" & Replace(Replace(queryStr, "=", """:"""), "&", """,""") & """}")
.WaitForResponse
Debug.Print .ResponseText
End With
Set WinHttp = Nothing
End Sub
SHA-256 Encrypt
[VBA] SHA-256 Encrypt
SHA-256 SHA-256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다. SHA-256은 미국의 국립표준기술연구소(NIST; National Institute of Standards and Technol..
xlmaster.tistory.com
Function SHA256Encrypt(text As String, Optional secretKey As String = vbNullString) As Byte()
Dim asc As Object, enc As Object
Dim bText() As Byte, bKey() As Byte, bytes() As Byte
Set asc = CreateObject("System.Text.UTF8Encoding")
If secretKey <> vbNullString Then
Set enc = CreateObject("System.Security.Cryptography.HMACSHA256")
bText = asc.Getbytes_4(text)
bKey = asc.Getbytes_4(secretKey)
enc.Key = bKey
bytes = enc.ComputeHash_2(bText)
Else
Set enc = CreateObject("System.Security.Cryptography.SHA256Managed")
bText = asc.Getbytes_4(text)
bytes = enc.ComputeHash_2((bText))
End If
SHA256Encrypt = bytes
Set asc = Nothing
Set enc = Nothing
End Function
Base64 Encode
[VBA] Base64 Encoding/Decoding
Base64 바이너리 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩이다. ASCII 문자 하나가 64진법의 숫자 하나를 의미하기 때문에 BASE64라는 이름을 가졌다. 데이터를 6..
xlmaster.tistory.com
Function Base64Encode(ByRef arrData() As Byte) As String
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
Base64Encode = Replace(objNode.text, Chr(10), vbNullString)
Set objNode = Nothing
Set objXML = Nothing
End Function
업비트 OPEN API
Upbit Open API v1.0.6
'VBA > Code' 카테고리의 다른 글
[VBA] 업비트 Open API>출금>개별 출금 조회 (0) | 2019.10.04 |
---|---|
[VBA] 업비트 Open API>출금>출금 리스트 조회 (0) | 2019.10.04 |
[VBA] 업비트 Open API>주문>주문 취소 접수 (0) | 2019.10.04 |
[VBA] 업비트 Open API>주문>주문 리스트 조회 (0) | 2019.10.04 |
[VBA] 업비트 Open API>주문>개별 주문 조회 (0) | 2019.10.04 |