본문 바로가기

VBA/Code

[VBA] 업비트 Open API>주문>주문하기

반응형

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

EXCHANGE API 자산 전체 계좌 조회 https://xlmaster.tistory.com/25
주문 주문 가능 정보 https://xlmaster.tistory.com/26
개별 주문 조회 https://xlmaster.tistory.com/32
주문 리스트 조회 https://xlmaster.tistory.com/27
주문 취소 접수 https://xlmaster.tistory.com/28
주문하기 https://xlmaster.tistory.com/29
출금 출금 리스트 조회 https://xlmaster.tistory.com/30
개별 출금 조회 https://xlmaster.tistory.com/31
출금 가능 정보 https://xlmaster.tistory.com/33
코인 출금하기 https://xlmaster.tistory.com/34
원화 출금하기 https://xlmaster.tistory.com/35
입금 입금 리스트 조회 https://xlmaster.tistory.com/36
개별 입금 조회 https://xlmaster.tistory.com/37
입금 주소 생성 요청 https://xlmaster.tistory.com/38
전체 입금 주소 조회 https://xlmaster.tistory.com/39
개별 입금 주소 조회 https://xlmaster.tistory.com/40
QUOTATION API 시세 종목 조회 마켓 코드 조회 https://xlmaster.tistory.com/15
시세 캔들 조회 분(Minute) 캔들 https://xlmaster.tistory.com/16
일(Day) 캔들 https://xlmaster.tistory.com/17
주(Week) 캔들 https://xlmaster.tistory.com/18
월(Month) 캔들 https://xlmaster.tistory.com/19
시세 체결 조회 당일 체결 내역 https://xlmaster.tistory.com/20
시세 Ticker 조회 현재가 정보 https://xlmaster.tistory.com/21
시세 호가 정보(Orderbook) 조회 호가 정보 조회 https://xlmaster.tistory.com/22

 

Upbit Open API v1.0.6

반응형