Upbit매매/중급 - Node

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

pishio 2022. 6. 24. 15:07

업비트 오픈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에서 확인 가능 합니다.