파이썬으로 코인 자동매매 프로그램 만들기 - 1 : 업비트에서 API 불러오기
다음글 파이썬으로 코인 자동매매 프로그램 만들기 - 2 : pyupbit 모듈 설치, 사용하기
파이썬으로 자동매매를 하기 위해선 각 코인 거래소의 API를 이용해야 한다.
API로 코인의 가격, 거래량 등을 불러올 수 있고 매수, 매도 기능을 사용해 프로그램으로 매매를 할 수도 있다,.
API란
알기 쉽게 정리하면, API(Application Programming Interface)는 여러 소프트웨어가 소통하는 도구이다.
정확한 정의는 '응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스'이다. (위키백과)
API를 이용하면 한 소프트웨어에 저장된 정보를 다른 소프트웨어가 불러와 이용하고 가공할 수 있다. 이때 저장되어 있는 정보를 제공하는 소프트웨어를 '서버', 이용하는 서버를 '클라이언트'라고 부른다. 소프트웨어를 만들때마다 새로운 정보를 저장해야 한다면, 여러 소프트웨어에 같은 정보가 중복되므로, 비효율적일 것이다. 기업은 서버에 저장된 공개 가능한 정보를 API 형태로 제공하며 비효율성을 낮추고, 자사의 서비스의 확장성을 넓힐 수 있다. API를 제공하는 기업은 정보의 보안성에 따라 정보를 제공하는 범위를 다르게 한다. 예를 들어, 개인적인 정보는 보안성이 아주 높은 정보이므로 이런 정보는 자사 소프트웨어 내에서만 공유할 것이다.
나는 '업비트'에서 제공하는 API 정보를 토대로 자동매매 프로그램을 만들 것이다. '업비트' 거래소를 운영하는 '두나무'는 서버에서 공개가능한 정보를 API로 제공하고 클라이언트는 이 API정보를 토대로 자신의 효율적인 프로그램을 만들어 사용한다. 고객은 양질의 정보를 사용할 수 있고, '두나무'는 API를 제공하며 더 많은 거래를 가져올 수 있기 때문에 서로에게 이익인 셈이다.
업비트 API 불러오기
업비트 API는 'REST API' 방식을 사용하고 있다. REST API 는 웹 API로, HTTP 통신으로 JSON(Javascript Object Notation), TXT, HTML, 일반 텍스트 등의 형태로 정보를 전송한다. 클라이언트가 정보를 요청하면 서버는 HTTP통신으로 정보를 제공하며 클라이언트는 URL 주소를 함수처럼 사용하며 정보를 이용한다. REST API에 대한 자세한 내용은 차후에 포스팅 하겠다.
업비트의 API를 사용하기 위해 docs.upbit.com/reference를 들어가면 업비트의 API 가이드를 볼 수 있다.
좌측 메뉴에서 '시세 종목 조회'를 클릭하면 다음과 같은 주소가 보인다.
표시된 URL 주소를 주소창에 직접 입력하면 다음과 같은 화면이 표시된다.
마켓 코드와 코인 이름이 화면 한 가득 채워진 것을 볼 수 있다. 이제 URL 주소를 파이썬 코드에 직접 입력해 사용해보자.
업비트의 API 가이드 페이지로 돌아가서 URL주소 바로 밑에 적힌 코드블럭의 Python 메뉴를 클릭하면 다음과 같은 코드를 볼 수 있다.
import requests
url = "https://api.upbit.com/v1/market/all"
querystring = {"isDetails":"false"}
response = requests.request("GET", url, params=querystring)
print(response.text)
URL 주소를 입력하고 요청 받은 정보를 response 변수 안에 담아 출력하는 코드다.
위의 코드를 파이썬 파일에 입력하고 터미널에서 실행하면
성공적으로 불러온 모습을 볼 수 있다. 하지만 위의 코드는 json 형식을 text 형식으로 불러왔기 때문에 정보를 가공하기 어렵다. 전체 코인의 개수를 세기 위해 len(response.text)를 출력해보자.
실제와 다른 결과가 나왔다.
response.text를 response.json으로 수정하자.
import requests
url = "https://api.upbit.com/v1/market/all"
querystring = {"isDetails":"false"}
response = requests.request("GET", url, params=querystring)
print(response.json())
json 형식으로 성공적으로 불러올 수 있었다. 다시 len함수로 전체 코인의 개수를 가져와보자.
import requests
url = "https://api.upbit.com/v1/market/all"
querystring = {"isDetails":"false"}
response = requests.request("GET", url, params=querystring)
print(len(response.json()))
다음 포스팅에서는 pyupbit 모듈을 이용해 더 편하게 정보를 불러오고 가공하는 방법을 알아보겠다.
참고한 동영상
www.youtube.com/watch?v=m22aCqGIzek&list=PLNPt2ycoheHrJBpCkpE2h4OBR8oxYyU3p&index=1&t=2s