전세계 각 가상통화 거래소마다 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)
현재시세 정보를 불러오는 모듈은 이제 만들었으니, 다음번에는 시세알림과 자동 주문 기능을 개발할 차례다.