본문 바로가기
Upbit매매/중급 - Node

[Upbit API] 시장가 매수, 조회 하기.

by pishio 2022. 6. 24.

업비트 오픈API를 사용해서 시장가 매수,

매수된 주문을 조회 해보는 예제 코드 입니다.

 

1. 시장가로  매수 하기.

2. 매수 주문 조회 하기. 

 

 

매수 주문 후 조회 하는 테스트. 

 

1. Upbit API doc

주문하기 : https://docs.upbit.com/reference/%EC%A3%BC%EB%AC%B8%ED%95%98%EA%B8%B0
개별 주문 조회 : https://docs.upbit.com/reference/%EA%B0%9C%EB%B3%84-%EC%A3%BC%EB%AC%B8-%EC%A1%B0%ED%9A%8C

 

 

2. Code

const client = require('./client')

async function test(){


	console.log('requestMarketBuy')
	const orderResponse = await client.requestMarketBuy('KRW-BTC', '4900')
	console.log(orderResponse)

	console.log('getOrderStatus')
	const orderStatus = await client.getOrderStatus('6830700e-9f2b-4216-99be-aaaaaaaa')
	console.log(orderStatus)

}

test()

위에서 주문금액이 4900으로 실패 케이스로, 주문하기, 조회하기 모두 실패가 나게 되어 있습니다.

 주문 : 금액을 5000원 이상으로 설정하면 정상 동작 가능 합니다.

 조회 : uuid를 주문 후 리턴 받은 값으로 변경합니다.

 

client.js

const request = require('request')
const uuidv4 = require("uuid/v4")
const crypto = require('crypto')
const sign = require('jsonwebtoken').sign
const queryEncode = require("querystring").encode

const settings = require('./settings');
const server_url = 'https://api.upbit.com'


exports.getOrderStatus = (uuid) => new Promise((resolve, reject)=> {

    const API = "/v1/order"
    const body = { uuid: uuid }

    request(createGetOptions(API, body), function(error, response, body) {
        if (error) {
            resolve(error);
        }
        resolve(body);
    })
})


exports.requestMarketBuy = (symbol, amt) => new Promise((resolve, reject)=> {

    const API = "/v1/orders"
    const body = {
        market: symbol,
        price: amt,
        side: 'bid',
        ord_type: 'price',
    }

    request(createPostOptions(API, body), function(error, response, body) {
        if (error) {
            resolve(error);
        }
        resolve(body);
    })
})


function createPostOptions(api, body){

    const query = queryEncode(body)
    const token = createToken(body)

    return {
        method: 'POST',
        url: `${server_url}${api}`,
        headers: {Authorization: `Bearer ${token}`},
        json: body
    }

}

function createGetOptions(api, body){

    const query = queryEncode(body)
    const token = createToken(body)

    return {
        method: 'GET',
        url: `${server_url}${api}?${query}`,
        headers: {Authorization: `Bearer ${token}`},
        json: body
    }

}

function createToken(body){

    const query = queryEncode(body)
    const hash = crypto.createHash('sha512')
    const queryHash = hash.update(query, 'utf-8').digest('hex')

    const payload = {
        access_key: settings.getAccessKey(),
        nonce: uuidv4(),
        query_hash: queryHash,
        query_hash_alg: 'SHA512',
    }

    return sign(payload, settings.getSecretKey())

}

https://github.com/pish-io/exchange/tree/main/upbit/node

 

 

전체 코드는 github에서 확인 가능 합니다.

 

댓글