파이썬3을 이용하여 코인원,빗썸,코빗의 가상화폐 시세정보를 불러오는 프로그램을 만들었다.

전세계 각 가상통화 거래소마다 API를 제공하고 있고, 때로는 파이썬(Python)으로 예제도 제공하지만 대부분이 파이썬2(Python 2.7)용이라 그대로 사용하기에는 무리가 많았다.

그래서 파이썬3(Python 3.6)용으로 된 프로그램을 개발하기 시작했다. 만들기 시작한지 며칠 안되어서 아직은 매우 단순한 기능만 있는 프로토타입이다. 좀더 발전시켜서 범용으로 쓸만하게 되면 깃허브(GitHub)에다 올릴까 생각중이다.

브라우저에서 쉽게 확인할 수 있도록 PHP로 만들까 하는 생각도 했지만 이미 http://wisebody.co.kr와 http://luka7.net 에서 상세한 정보를 제공하고 있기도 하고, 또한 궁극적으로는 자동으로 트레이딩이 가능한 로봇을 만드는 것이 목적이기 때문에 파이썬으로 작성했다. 리플코인 거래할 때처럼 직접 인간이 24시간 계속 트레이딩을 한다면 피곤할 것이다. 그래서 적당한 순간에 기계한테 넘길 생각이다. 잘 돌아가면 이곳 k-june.com 리눅스 서버에다 올려놓아서 24시간 가동시키려고 한다.

import json
import urllib.request
from urllib.request import Request, urlopen

class bithumb:
    urlTicker = urllib.request.urlopen('https://api.bithumb.com/public/ticker/all')
    readTicker = urlTicker.read()
    jsonTicker = json.loads(readTicker)
    FindBTC = jsonTicker['data']['BTC']['closing_price']
    BTC = int(FindBTC)
    FindETH = jsonTicker['data']['ETH']['closing_price']
    ETH = int(FindETH)
    FindDASH = jsonTicker['data']['DASH']['closing_price']
    DASH = int(FindDASH)
    FindLTC = jsonTicker['data']['LTC']['closing_price']
    LTC = int(FindLTC)
    FindETC = jsonTicker['data']['ETC']['closing_price']
    ETC = int(FindETC)
    FindXRP = jsonTicker['data']['XRP']['closing_price']
    XRP = int(FindXRP)

class coinone:
    urlTicker = urllib.request.urlopen('https://api.coinone.co.kr/ticker/?currency=all')
    readTicker = urlTicker.read()
    jsonTicker = json.loads(readTicker)
    FindETC = jsonTicker['etc']['last']
    ETC = int(FindETC)
    FindBTC = jsonTicker['btc']['last']
    BTC = int(FindBTC)
    FindETH = jsonTicker['eth']['last']
    ETH = int(FindETH)
    FindXRP = jsonTicker['xrp']['last']
    XRP = int(FindXRP)

class korbit:
    reqBTC = Request('https://api.korbit.co.kr/v1/ticker?currency_pair=btc_krw' , headers={'User-Agent': 'Mozilla/5.0'})
    readBTC = urlopen(reqBTC).read()
    jsonBTC = json.loads(readBTC)
    FindBTC = jsonBTC['last']
    BTC = int(FindBTC)
    reqETH = Request('https://api.korbit.co.kr/v1/ticker?currency_pair=eth_krw' , headers={'User-Agent': 'Mozilla/5.0'})
    readETH = urlopen(reqETH).read()
    jsonETH = json.loads(readETH)
    FindETH = jsonETH['last']
    ETH = int(FindETH)
    reqETC = Request('https://api.korbit.co.kr/v1/ticker?currency_pair=etc_krw' , headers={'User-Agent': 'Mozilla/5.0'})
    readETC = urlopen(reqETC).read()
    jsonETC = json.loads(readETC)
    FindETC = jsonETC['last']
    ETC = int(FindETC)
    reqXRP = Request('https://api.korbit.co.kr/v1/ticker?currency_pair=xrp_krw' , headers={'User-Agent': 'Mozilla/5.0'})
    readXRP = urlopen(reqXRP).read()
    jsonXRP = json.loads(readXRP)
    FindXRP = jsonXRP['last']
    XRP = int(FindXRP)

현재 구현된 기능은 국내 가상화폐 거래소의 현재시세를 JSON형식으로 가져와서 함수에 저장하는 역할을 한다. 소스 코드를 긁어 붙여서 바로 사용하거나 여기서 다운로드 할 수 있다. 파일명이 price.py이니 모듈로 import price 해서 사용하면 편하게 사용할 수 있도록 해놓았다.

사용법은 모듈명.거래소.가상통화종류 이렇게 된다. 물론 원화(KRW)로 출력된다. 지원되는 가상통화의 종류는 다음과 같다.

빗썸(bithumb) : 비트코인(BTC), 이더리움(ETH), 이더리움 클래식(ETC), 대시 코인(DASH), 라이트코인(LTC), 리플 코인(XRP)

코인원(coinone) : 비트코인(BTC), 이더리움(ETH), 이더리움 클래식(ETC), 리플 코인(XRP)

코빗(korbit) : 비트코인(BTC), 이더리움(ETH), 이더리움 클래식(ETC), 리플 코인(XRP)

아래는 예제이다. 각각 빗썸의 비트코인 가격, 코인원의 리플 가격, 코빗의 이더리움 가격을 출력한다.

import price

print(price.bithumb.BTC)
print(price.coinone.XRP)
print(price.korbit.ETH)

현재시세 정보를 불러오는 모듈은 이제 만들었으니, 다음번에는 시세알림과 자동 주문 기능을 개발할 차례다.

 

11 thoughts on “파이썬3을 이용하여 코인원,빗썸,코빗의 가상화폐 시세정보를 불러오는 프로그램을 만들었다.

  1. 심성구

    와우~ 드디어 찾았네요
    제가찾던 그런 프로그렘입니다.
    저한테도 좀 파세요~ ?꼭좀…

    Reply
    1. 이추 Post author

      네. 지금 해외 거래소의 트레이딩봇 소스를 보면서 독자적으로 개발할지 아니면 한국 거래소의 API만 그곳에 추가할지
      고민 중인 상황입니다. 파이썬 대신에 node.js로 개발할까 하는 생각도 들고요. 아무쪼록 뭔가 성과가 나오는대로 깃허브에 올릴게요. 함께 발전시켜 나가요~

      Reply
  2. 오지웅

    저는 지금 아마존 웹서버에 아파치와 mysql과 함께 php로 public API를 테스트해보고 있습니다.
    예를 들어 비트코인의 현재 시세를 가져올때는
    //빗썸
    $result_bithumb_BTC = file_get_contents(‘https://api.bithumb.com/public/ticker/BTC’);
    //코인원
    $result_coinone_BTC = file_get_contents(‘https://api.coinone.co.kr/ticker/?currency=btc’);
    //코빗
    $result_korbit_BTC = file_get_contents(‘https://api.korbit.co.kr/v1/ticker?currency_pair=btc_krw’);

    이렇게 file_get_contents 함수를 사용하여 가격을 가져옵니다.

    근데 세개의 사이트는 file_get_contents를 통하여 값을 가져오는 속도가 서로 다릅니다.

    빗썸의 경우는 1초 미만이고.. 코인원은 5초 이상 걸리고. 그러네요..

    그래서 http://wisebody.co.kr/ 이런 사이트 처럼 접속하자마자 가격을 가져오면 좋겠는데 한참 있다가 가격이 뜨네요..ㅠ

    어떻게 해결해야 할까요..?

    감사합니다..!!

    Reply
    1. 이추 Post author

      파이썬에서도 데이터를 가져오는데 시간이 몇초씩 걸리네요. 거래소마다 딜레이가 조금씩 차이가 있다는 느낌도 듭니다. 웹에서는 아무래도 페이지를 열면 바로 보여야 하니, 일정 간격으로 미리 가져와서 서버에 저장해 두다가 사용자의 접속이 있으면 서버에 저장된 값으로 뿌려주어야 할 듯 하네요.

      Reply
  3. 김병철

    우연찮게 들어오게 되었습니다.
    누군가 만들어 놓은걸 참조 해볼까 해서요.
    이제 파이썬 공부하면서 만들어 볼거라 ㅎㅎㅎ
    깃헙에 올리시면 도움 받도록 하겠습니다.

    더위에 건강잘 챙기시기 바랍니다.

    Reply
    1. 이추 Post author

      네. 지금은 실시간 시세변동 알림 기능이 구현되어 있는 상황이고, 조금 더 가격 데이터를 수집한 다음에 자동주문 기능을 추가할 계획입니다. 범용으로 쓰일 수 있게끔 다양한 기능들을 집어넣고 싶은데 쉽지 않네요.ㅎㅎ

      Reply
  4. 혜린아삐

    좋은정보 감사합니다.
    파이썬으로 코빗 시세변동알림건 만드는것 개발해보고 싶었는데..
    업데이트 된것 올려주시면 감사..

    Reply

댓글 남기기