암호통화 API2018. 1. 25. 16:00

 

 

"~API 다뤄보기" 시리즈를 작성하고 있다보니 이게 너무 간단한 구조이다보니 #2편으로 넘어가기 힘드네요.

 

 

그렇지만 API에 대해 잘 모르는 분들을 위해 쉽게 풀어 보도록 하겠습니다.

 

 

우선 업비트의 경우에는 공식적으로 API를 지원하지 않고 있으나 Web Request 를 통해 조회가 가능하고 국내의 다른 가상통화 거래소보다 업비트에 상장된 종목이 많은편이기에 JSon Parsing 을 조금만 안다면 업비트를 통해 시세 데이터를 받아오는것이 편리할 수 있을 것 같습니다.

 

 

우선 업비트에서 데이터를 받으려면 어떤 데이터를 전송 해달라고 할 것인지 업비트 서버에 요청을 해야 합니다.

 

 

요청문의 기본 프레임은 아래와 같습니다.

 

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10&to

 

 

 

위 텍스트를 다시 풀어내면 아래와 같은 구조가 됩니다.

 

 

 

- 1. 조회를 위한 기본 주소

 

 

- 2. 조회 기준을 입력하는데 필요한 데이터에 맞게 minutes, days, weeks, months 등을 입력

 

 

- 3. 조회 단위를 되는데 만약 2번에서 minutes가 입력되고 3번에서 1이 입력되면 매 '1분' 마다의 데이터를 전송

      ( 주의사항 : 3번의 입력은 2번의 값이 minutes 일때만 하면 됩니다. )

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

      2번에서 minutes를 입력하고 3번에서 30을 입력하면 매 '30분' 마다의 데이터를 전송

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/30?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

      2번에서 days를 입력하고 3번에서 1을 입력하면 매 '1일' 단위의 데이터를 전송 요청 할 수 있음

      ( 주의사항 : 아래의 조회 요청문은 위의 것과 다르게 days 이므로 3번 입력 항목이 없음)

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/days/?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

 

- 4. 조회 요청할 종목코드를 입력할 수 있으며 필자가 업비트를 통해 수신받고 있는 종목코드 목록은 아래 별도 기입

 

 

- 5. 수신받을 데이터의 갯수를 입력

       2번 minutes, 3번 1, 5번에 10을 입력하면 업비트 서버에 "1분 단위의 데이터 10개를 보내주시오" 라는 조회 요청

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10

 

 

       2번 days, 3번 1, 5번에 50을 입력하면 업비트 서버에 '1일 단위의 데이터 50개를 보내주시오"라는 조회 요청

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/days/?code=CRIX.UPBIT.KRW-BTC&count=50

 

 

 

위 조회 요청문은 조회 요청 시점으로부터의 과거 데이터를 수신 받을 수 있으며 5번의 count값은 입력하기에 따라 수신 받을 수 있는 데이터의 갯수가 달라지며 최대값은 200입니다.

 

 

따라서 과거 데이터를 모두 받고 싶다면 별도의 조회 요청문이 필요한데 위에서 언급한 기본 프레임에서 살짝 살을 붙이기만 하면 되고 아래와 같습니다.

 

 

 

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-BTC&count=10&to=2017-12-27%2005:10:00

 

 

 

기본 요청문 뒤에 특정 날짜, 시간값을 넣고 요청하면 해당 시점을 기준으로 과거 데이터를 보내주게 되는데 위 조회 요청문의 경우에는 2017년 12월 27일 오전 5시 10분을 기점으로 1분 단위의 데이터 10개를 보내 달라는 뜻이 됩니다.

 

 

기본적인 날짜시간값은 DATETIME 형식이기 때문에 각자가 사용하는 프로그램에 따라서 AddMinutes(), AddDays() 등의 함수를 이용하여 날짜시간값을 변경하여 연속 조회 요청하면 필요한 만큼의 과거 데이터를 충분히 받을 수 있습니다.

 

 

조회 요청에 의해 수신 받을 수 있는 JSON 파일을 메모장으로 열어보면 아래와 같은 데이터가 들어 있음을 확인할 수 있습니다.

 

 


     [

        { 

           "code":"CRIX.UPBIT.KRW-BTC",

           "candleDateTime":"2017-12-27T05:00:00+00:00",

           "candleDateTimeKst":"2017-12-27T14:00:00+09:00",

           "openingPrice":22495000.00000000,

           "highPrice":22563000.00000000,

           "lowPrice":22360000.00000000,

           "tradePrice":22496000.00000000,

           "candleAccTradeVolume":488.99434602,

           "candleAccTradePrice":10985289927.57700000,

           "timestamp":1514351400138,

           "unit":10

        }

     ]

 

 

▲ code : 종목코드

 

▲ candleDateTime : 해당 캔들(봉) 생성 시각

 

▲ candleDateTimeKst : 해당 캔들(봉) 생성 시각 (한국시각 기준. 한국은 UTC +09:00:00 임)

 

▲ openingPrice : 해당 캔들(봉) 시가

 

▲ highPrice : 해당 캔들(봉) 고가

 

▲ lowPrice : 해당 캔들(봉) 저가

 

▲ tradePrice : 해당 캔들(봉) 종가

 

▲ candleAccTradeVolume : 해당 캔들(봉) 거래량

 

▲ candleAccTradePrice : 해당 캔들(봉) 거래대금

 

▲ timestamp : UNIX 기준의 타임 스탬프

 

▲ unit : 조회 기준 (본문의 조회 요청문중 3번에 해당하는 값과 일치)

 

 

개인적으로 사용하기 위한 용도로 업비트 시세 수신 프로그램을 만들어서 운영하고 있으며 종목코드 목록은 아래와 같습니다.

 

 

 

종목명 (한글)

 

종목명 (영문)

종목코드 

 

에이다

 

Ada

KRW-ADA

 

스테이터스 네트워크 토큰

 

Status Network Token

KRW-SNT

 

리플

 

Ripple

KRW-XRP

 

비트코인

 

Bitcoin

KRW-BTC

 

네오

 

Neo

KRW-NEO

 

이더리움

 

Ethereum

KRW-ETH

 

퀀텀

 

Qtum

KRW-QTUM

 

루멘

 

Lumen

KRW-XLM

 

비트코인 골드

 

Bitcoin Gold

KRW-BTG

 

비트코인 캐시

 

Bitcoin Cash

KRW-BCC

 

이더리움 클래식

 

Ethereum Classic

KRW-ETC

 

뉴 이코노미 무브먼트

 

New Economy Movement

KRW-XEM

 

스트라티스

 

Stratis

KRW-STRAT

 

파워렛저

 

Power ledger

KRW-POWR

 

블록틱스

 

Blocktix

KRW-TIX

 

아인스타이늄

 

Einsteininum

KRW-EMC2

 

스팀

 

Steem

KRW-STEEM

 

머큐리

 

Mercury

KRW-MER

 

오미세고

 

OmiseGo

KRW-OMG

 

스팀달러

 

SteemDollars

KRW-SBD

 

라이트코인

 

Litecoin

KRW-LTC

 

모네로

 

Monero

KRW-XMR

 

코모도

 

Komodo

KRW-KMD

 

피벡스

 

PIVX

KRW-PIVX

 

리스크

 

Lisk

KRW-LSK

 

어거

 

Augur

KRW-REP

 

아크

 

Ark

KRW-ARK

 

그로스톨코인

 

Groestlcoin

KRW-GRS

 

스토리지

 

Storj

KRW-STORJ

 

대시

 

Dash

KRW-DASH

 

웨이브

 

Waves

KRW-WAVES

 

메탈

 

Metal

KRW-MTL

 

지캐시

 

Zcash

KRW-ZEC

 

버트코인

 

Vertcoin

KRW-VTC

 

 

위 내용들은 프로그램을 통해 시세 데이터를 수신 받아서 저장해두고 그것을 기반으로 어떤 아이디어나 매매 로직을 적용할 분들에게만 필요하고 손매매를 하는분께는 전혀 쓸모 없는 내용입니다만 뭔지 궁금한 분들은 위 '조회 요청문'을 인터넷 창(Internet Explorer, Chrome, Safari 등)의 주소 입력란에 넣고 엔터를 눌러보면 파일을 다운받을 수 있으니 메모장 등으로 확인 해보시면 됩니다.

( 쉽게 하려면, 본문에서 사각 테이블 안에 주소가 적힌 부분을 클릭하면 시세 데이터 파일을 다운 받을 수 있습니다. )

 

 

업비트는 정식 API를 지원하지 않기 때문에 시세 데이터 조회 요청시 최소 단위가 분(minutes)이고 실시간 체결 데이터인 틱(Tick) 단위의 데이터는 제공하지 않고 주문이 불가능한 상태이기 때문에 정식 API가 공개되기를 기다리는 분들이 많은것으로 알고 있는데 개인적으로도 염원하는바이며 정식 API가 공개되면 개인적으로 개발해서 사용하고 있는 시세 수신용 프로그램을 조금 더 다듬어서 주문 기능까지 포함하여 공개 하겠습니다.

 

 

정식 API가 지원되지 않는 경우에는 '거래'는 할 수 없고 단순히 시세 조회만 가능합니다.

 

 

더불어 얼마전 한 독자분께서 거래용 전용 프로그램의 제작을 의뢰 하기도 했는데 필자가 직접적으로 거래를 하지 않고 있는 상황이다보니 필요성에 대해 알지 못했습니다만 전일 밤 9시부터 새벽 3시까지 가상통화 거래하는분 여러명과 시간을 가지다보니 웹 브라우저의 경우 메모리 릭(누수, Lick) 현상 때문이라고 생각이 들었기에 현재 바쁜 작업들이 끝나고 나면 제작해서 공개 하겠습니다.

( 프로그램의 완성도는 독자님들의 피드백에 따라 달라질 수 있습니다. )

 

 

거래 전용 프로그램의 경우 우선적으로 작업되었으면 가상통화 거래소가 있으면 관련해서 Comment 남겨 주시고 UI(User Interface, 쉽게 말해 디자인.)은 거래소에 구분없이 동일하게 할 예정입니다.

 

 

호가창에서 뵙겠습니다.

 

 

Posted by 투자의神