거래소 통합 API 패키지 개발 상황 보고!

in #coinex8 years ago (edited)

안녕하세요

이틀전 스팀잇에 입성한 프로그래머 IronPark 이라고 합니다. 가입인사 / 자기소개 를 얼마전에 포스팅했습니다. 생각보다 많은 환대에 감사드리며 앞으로 좋은 컨탠츠, 소식을
보다 자주 전할수 있도록 노력해야 겠습니다.

이전 포스트를 작성하면서 앞으로 진행할 프로젝트에 대한 언급을 했었는데요 1번 프로젝트인 시세 뷰어 개발에 들어갔습니다.

하지만 진행 하면서 몇가지 불편한점이 있었는데요, 바로 거래소별 API 차이 또 쉽게 사용할 수 있는 라이브러리의 부재 였습니다. 라이브러리가 없는것은 아니지만 한국 거래소를 지원하는 것은 찾기 어려웠으며 여러 거래소를 지원하는 것은 거의 없었습니다 혹은 구현되어있다 하더라도 Full API를 지원 하지 않았죠.

따라서 각종 거래소를 지원하는 직접 API 패키지를 만들기로 하였습니다 Go언어를 이용해서 말이죠.

Go는 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 만들 수있는 오픈 소스 프로그래밍 언어입니다. by Google

사실 저는 어떤 라이브러리/프로그램 등을 만들때 항상 이름짓는것을 가장 어렵게 생각하는데요 의외로 이번에는 별다른 고민을 하지 않았습니다 용도가 명확했고 딱히 겹치는 라이브러리도 없는것을 알았으니까요 :) 패키지 명은 CoinEX 로 정했으며 가진 속 뜻은 Coin Exchange 의 줄임말입니다. 사실상 속 뜻이라고 하기에는 너무 간단하군요 :P

해당 프로젝트의 1차 목표는 다음과 같습니다.

  1. Poloniex / Bithumb / Coinone / Bittrex Public Api 구현
  2. 1에 해당하는 거래소의 Private Api 구현
  3. 각 API 추상화하여 통합할수 있는 레이어 구성

현재 Bithumb의 Public API 가 사용가능하며 Poloniex는 일부 구현 되어있습니다. 일단 Poloniex 와 Bithumb 을 우선 구현할
생각이고 그다음이 Coinone , Bittrex 입니다.

라이브러리는 여기 서 사용/테스트 하거나 소스코드를 살펴볼 수 있습니다.
마지막으로 10초마다 실시간으로 폴로닉스 가격을 빗썸 BTC 가격을 기준으로 환산하여 비교하는 예제 코드를 소개합니다.

package main

import (
    "github.com/IronPark/coinex/exchange/bithumb"
    "github.com/IronPark/coinex/exchange/poloniex"
    "fmt"
    "time"
)


func main() {
    bit := bithumb.NewEXBitumb()
    pol := poloniex.NewEXPoloniex()
    for {
        bithumbBTC, _ := bit.GetTicker("BTC")
        bithumbETH, _ := bit.GetTicker("ETH")
        bithumbETC, _ := bit.GetTicker("ETC")
        bithumbLTC, _ := bit.GetTicker("LTC")
        bithumbDASH, _ := bit.GetTicker("DASH")
        poloTick,_ := pol.GetTicker()

        krBTC := bithumbBTC.ClosingPrice

        fmt.Println(time.Now());
        fmt.Printf("BTC  %.f원\n",krBTC)
        fmt.Printf("ETH  %.f원 poloniex: %f원\n", bithumbETH.ClosingPrice, poloTick.BTCETH.Last*krBTC)
        fmt.Printf("ETC  %.f원 poloniex: %f원\n", bithumbETC.ClosingPrice, poloTick.BTCETC.Last*krBTC)
        fmt.Printf("LTC  %.f원 poloniex: %f원\n", bithumbLTC.ClosingPrice, poloTick.BTCLTC.Last*krBTC)
        fmt.Printf("DASH %.f원 poloniex: %f원\n", bithumbDASH.ClosingPrice, poloTick.BTCDASH.Last*krBTC)
        fmt.Printf("XRP %.f원\n",  poloTick.BTCXRP.Last*krBTC);
        time.Sleep(time.Second*10)

    }
}

출력 형태는 다음과 같습니다.

2017-05-24 03:15:40.7810949 +0900 KST
BTC  3106000원
ETH  230650원 poloniex: 229844.000000원
ETC  13995원 poloniex: 14223.958060원
LTC  40900원 poloniex: 41030.260000원
DASH 188800원 poloniex: 183426.911020원
XRP 466원

그럼 다음번에는 더욱 발전한 모습으로 뵐수 있기를 기원하면서 이만 줄이겠습니다 :)

다음에 또만나요!

Sort:  

Thank you for your favor!

u r welcome...

Congratulations @ironpark! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

If you want to support the SteemitBoard project, your upvote for this notification is welcome!

이 글을 이제야 확인하다니! 응원하겠습니다!!

깃헙 스타는 덤입니다..^^