업비트 API 서비스 자바스크립트로 접근

in #kr-dev6 years ago (edited)

업비트 API 서비스 자바스크립트로 접근



업비트에서도 2018-06-21일자로 API 정식 서비스를 하네요. 지금까지 업비트에 가격 동향을 내부 API 주소로 접근하셨을 텐데 정식으로 공개 되어서 쉽게 가상화폐정보를 확인할 수 있게 되었네요. OPEN API KEY를 발급 받아서 직접 거래에 사용도 할 수 있네요. 오늘 post은 간단히 자바스크립트를 이용하여 가상화폐 정보를 조회하는 방법을 살펴보도록 하겠습니다.

1. 자바스크립트 접근


  const request = new XMLHttpRequest();
  const url = '업비트 주소';
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);  

위 코딩으로 API 주소를 통해서 해당 Coin 정보를 가져오게 된다. request.responseText로 가져온 정보를 JSON.parse()함수로 JSON 형태로 변환 시키고 obj객체로 JSON으로 변환된 정보를 쉽게 접근 할 수 있게 됩니다.

그러면, 이 로직으로 통해 업비트 API 정보를 조회 해 볼까요.

2. 마켓 정보 List 조회


curl --request GET \
  --url https://api.upbit.com/v1/market/all

마켓의 코인 리스트 조회 할 수 있게 되어 있네요.

그러면, 코인 리스트 정보를 조회해 볼까요.

[자바스크립트 소스]

  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/market/all';
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);

[결과]

3. 마켓 Ticker 조회


curl --request GET \
  --url 'https://api.upbit.com/v1/ticker?markets=KRW-BTC'

마켓의 특정 코인에 대한 가격를 조회할 수 있습니다.

markets=KRW-BTC

KRW마켓에 대한 BTC 가격을 조회를 하게 됩니다. 참고로, KRW, BTC, ETH, USDT 마켓이 존재하고 해당 마켓에 대한 각각의 코인 가격을 조회 할 수 있습니다.

그러면, KRW마켓의 대한 BTC 코인의 가격을 살펴볼까요.

[자바스크립트 소스]


  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/ticker?markets=KRW-BTC';;
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);  

[결과]

4. 캔들 조회


1) 분 분봉


curl --request GET \
  --url 'https://api.upbit.com/v1/candles/minutes/5?market=KRW-BTC&count=3'

분봉에 대한 갯수를 출력 할 수 있습니다. 분봉의 기준 시각이 매 시의 0, 5, 10, 15.. 55분으로 이루어 진다고 하네요. 1, 3, 5, 10, 30, 60, 240분 간격의 시세를 종합한 정보 조회 할 수 있다고 나와 있습니다.

minutes/5?market=KRW-BTC&count=3

앞에 5분 분봉을 말하고 뒤에 count은 해당 분봉의 최근 갯수를 나타냅니다.

그러면, 최신 KRW 마켓에 대한 STEEM 가격을 5분봉을 기준으로 3개의 데이터를 가져와 볼까요.

[자바스크립트 분분봉 소스]

  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/candles/minutes/5?market=KRW-BTC&count=3';
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);  

[결과]

2) 일,주,월 분봉 추가 내용


url에 값만 형식에 맞추면 됩니다.

  • 일 : "days?market"
url = 'https://api.upbit.com/v1/candles/days?market=KRW-BTC'
  • 주: "weeks?market"
url = 'https://api.upbit.com/v1/candles/weeks?market=KRW-BTC'
  • 월: "months?market"
url = 'https://api.upbit.com/v1/candles/months?market=KRW-BTC'

days, weeks, minths 만 붙이고 뒤에 market="KRW마켓-타켓BTC코인"을 지정함으로서 원하는 코인의 정보를 얻을 수 있게 되어 있네요.

예를 들면, 주 분봉으로 KRW 마켓의 STEEM의 정보를 조회하고 싶다면

**weeks?market=KRW-STEEM"

이렇게 수정하면 되겠죠. 그리고 url에 대한 정보를 토대로 XMLHttpRequest로 읽어오면 자바스크립트로 간단히 조회가 가능해지네요.

5. 중복된 부분을 정리하여 함수 만들기


function MarketCoinRead(url){
  const request = new XMLHttpRequest();  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);  
  return obj;
}

이렇게 읽을 함수를 사용자정의함수로 만들어 놓습니다. 이렇게 해놓으면 url의 정보만 있으면 그 정보에 대한 조회 정보를 얻을 수 있게 됩니다. 그리고 얻은 정보는 obj 객체에 저장되고 그 정보는 MarketCoinRead()함수를 호출한 곳에 반환하게 됩니다.

1) 리스트 정보


MarketCoinList();
function MarketCoinList(){
  const url = 'https://api.upbit.com/v1/market/all';
  var obj = MarketCoinRead(url);
  console.log(obj);  
 }

위처럼 코딩하면 obj에는 리스트 정보를 가져오고 나중에 이 정보를 HTML로 디자인해서 출력하면 되겠죠.

2) 특정 마켓 코인 조회


MarketCoinTicker('KRW','BTC');
function MarketCoinTicker(market,coin){
  const url = 'https://api.upbit.com/v1/ticker?markets='+market+'-'+coin;;
  var obj = MarketCoinRead(url);
  console.log(obj);   
 }

KRW마켓의 BTC 코인 조회가 가능하겠죠.

3) 캔들 조회(분봉 기준)-일/주/월 함수는 비슷한 방식으로 직접 만드세요


MarketCoincandlesMinutes('KRW','STEEM',5,3);
function MarketCoincandlesMinutes(market,coin,timeVal,count){
  const url = 'https://api.upbit.com/v1/candles/minutes/'+timeVal+'?market='+market+'-'+coin+'&count='+count;
  var obj = MarketCoinRead(url);
  console.log(obj);  
 }

이렇게 KRW 마켓에 STEEM 코인을 5분분봉으로 최근 3개의 데이터를 가져오게 되겠죠.

6. 테스트 소스


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Upbit.js</title>
</head>
<body>  
<script> 
//마켓 정보 List Ticker 조회
MarketCoinList();
//마켓 Ticker 조회
MarketCoin('KRW','BTC');
//캔들 조회
MarketCoincandles('KRW','STEEM',5,3);

function MarketCoinList(){
  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/market/all';
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);
 }
function MarketCoin(market,coin){
  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/ticker?markets='+market+'-'+coin;;
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);  
 }

function MarketCoincandles(market,coin,timeVal,count){
  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/candles/minutes/'+timeVal+'?market='+market+'-'+coin+'&count='+count;
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  console.log(obj);  
 }

function MarketCoinRead(url){
  const request = new XMLHttpRequest();
  const url = 'https://api.upbit.com/v1/candles/minutes/'+timeVal+'?market='+market+'-'+coin+'&count='+count;
  
  request.open("GET", url, false);
  request.send();
  var obj = JSON.parse(request.responseText);
  //console.log(obj);  
  return obj;
}
</script>
</body>
</html>

마무리


자바스크립트로 간단히 실험을 해보았습니다. 참고로, WebSocket 방식으로 접근 제어가 가능하지만 설치하는 부분이 있기 때문에 자바스크립트가 간단한 정보 조회을 실험했네요. 이 실험은 간단히 원리를 살펴보는 실험이기 때문에 직접 이용에 있어서는 업비트 규정에 맞게 사용하시기 바랍니다. 어제 API 공지글 보고 가셔 몇가지 실험한 뒤 간단히 뭔가를 만들었는데 개인 소장용이라서 공개는 하지 않겠습니다. 위의 코딩에서 간단히 정보 조회가 되면 그 정보를 통해서 가공하여 HTML로 멋지게 디자인하시면 재밌는 것을 많이 만드실 수 있을 꺼에요.

참고로, 자산, 주문, 출금은 EXCHANGE API으로 업비트 API키를 발급 받아서 봇을 만드시는 분들이 많을 것 같군요.

그런데, 기존에 업비트 거래 폭주하면 제대로 매수/매도가 이루어지지 않는데 API로 거래하는 것은 정상적으로 이루어질 지는 의문이네요. 업비트 거래하신 분들은 아마 아시겠지만 일시적 거래 폭주하면 자신이 매수/매도 등록한 것이 일정시간이 지나도록 수정이 잘 안되고 뒷북 작렬을 경험하신분들이 아마 많으실 꺼에요.

Sort:  

(jjangjjangman 태그 사용시 댓글을 남깁니다.)
호출에 감사드립니다! 즐거운 스티밋하세요!

짱짱맨 방문에 감사합니다.

오오 업비트도 api를 제공해주다니ㅎㅎ 신기하군요 ~ 좋은 포스팅 잘 봤습니다 !

이제 봇 개발자들이 많이 프로그램을 만들 듯 싶네요

JAVA는 어떻게 compiler 하는 건가요? compiler가 따로 있나요?

어떤 컴파일이 아니라 C언어는 Compiler이고 java 는 interpreter 방식으로 나뉘어요.

아 JAVA를 사용 안해 봐서 BASIC 같은 interpreter 방식이군요.

신기합니다. 이걸로 봇을 만들 수가 있다니 ㅎㅎㅎ

업비트에서 API 키 발급 받으시면 접근 할 권한이 생기니깐 거기에 코딩으로 로직만 잘 짜면 봇이 만들어 질 듯 싶네요.
한번 해볼까 생각중이네요

아 API키를 받아서 하는군요. 으음. 신기합니다. 다른 거래소도 다 그럴까요? 궁금. ㅎㅎ. 오. 봇을 그거 재밌겠습니다. ㅎㅎ

API 제공되는 거래소만 가능 할 꺼에요.

업비트는 말씀하신 것처럼 되고, 빗썸도 되는 것 같던데요. 고팍스도 될랑가. 한 3~4개 이상은 되겠네요. ㅎㅎㅎㅎ

헐... 무슨말인지...

지난 post와 연계된 내용이라 좀 어렵게 느껴지셨을 거에요 ^^

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.028
BTC 58729.26
ETH 2640.67
USDT 1.00
SBD 2.47