본문 바로가기

Project

01-2. 비트코인 자동 매매 트레이딩 봇: 너무 쉬운 API, 이해하고 사용해요

반응형

 

 

비트 코인 자동 매매 트레이딩 프로그램 만들기라니,

생에 첫 개인 프로젝트를 시작하면서 너무 어려운 걸 선택했나..라는 생각도 들었습니다.

그러나, 역시 집단 지성은 최고입니다.

 

온라인 상에서 문서 또는 영상으로 비트코인(가상 화폐) 자동 매매 프로그램 제작에 대한 정보를

무료로 제공하는 자료들이 있어 많은 도움이 되었습니다.

좋은 자료 공개해 주신 모든 분들께 감사드리며,

파이썬과 업비트 API를 이용한 비트코인(가상 화폐) 자동 매매 프로그램 만들기, 하나씩 시작해 봅시다. 🤗

 

# 주로 이용한 참고 자료들은 본문 맨 아래에 남겨놓았습니다.

 

# 포스팅 내용

  • 개발 준비를 위한 프로그램 설치: 아나콘다(파이썬, 주피터 노트북), 비주얼 스튜디오 코드
  • 프로그램 제작 경로 및 새 파일 생성
  • 업비트 API 소스 코드로 마켓 코드(티커) 정보 불러오기
  • API 소스 코드 한 줄씩 이해하기
  • 전체 요약

 

 

Step 1. 준비물 준비

가장 먼저, 비트코인 자동 매매 트레이딩 봇을 만들기 위해 필요한 준비물 2가지가 있습니다.

아나콘다비주얼 스튜디오 코드를 설치해 주세요.

설치를 위한 셋업 파일은 아래의 링크에서 다운로드할 수 있습니다.

 

아나콘다 Anaconda 설치 (파이썬 Python, 주피터 노트북 Jupyter notebook 포함)

아나콘다를 설치하면 파이썬과 함께 수학 및 과학 분야 주로 사용하는

라이브러리 패키지가 모두 포함되어 설치됩니다.

또한 데이터 분석에 유용한 주피터 노트북까지 한 번에 설치됩니다.

 

www.anaconda.com/products/individual

 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

비주얼 스튜디오 코드 Visual Studio Code 설치

비주얼 스튜디오 코드는 개발자를 위한 코드 편집기 중 하나입니다.

다양한 OS 및 개발 환경을 지원하고 사용이 굉장히 편리하여 인기가 높은 개발 도구입니다.

(편의상 VS 코드라고 부르겠습니다.)

 

https://code.visualstudio.com/download 

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

 

 

Step 2. 새 파이썬 파일 생성

비트코인 자동 매매 트레이딩 봇 만들기의 기본적인 준비를 마쳤습니다.

이제 VS 코드를 실행하여 새 파이썬 파일을 만들어주세요.

VS 코드 실행 → File → Open Folder → 원하는 폴더 선택 → 새 파일 생성 (*. py)

VS 코드 실행 후 파일을 저장할 폴더 경로를 지정해 줍니다. 

 

폴더 경로를 지정하고 나면, 왼쪽 바에 지정한 폴더가 연결된 것을 볼 수 있습니다.

폴더 명 옆에 있는 파일 모양 아이콘 클릭하시면 자동으로 새 파일이 생성됩니다.

이때, 파일 명과 함께 파이썬의 확장자. py도 함께 적어야 합니다.

 

 

Step 3. API로 데이터 호출 (마켓 코드 불러오기)

본격적으로, 비트코인을 비롯한 가상 화폐 자동 매매 트레이딩에 기본이 되는 "마켓 코드"를 불러와 보겠습니다.

마켓 코드는 업비트에서 거래 가능한 모든 가상 화폐 코인들의 종류를 모아 놓은 것입니다.

각 코인의 이름 (한글, 영문)과 고유한 코드 명(티커, ticker)을 제공합니다.

샘플 코드 복사 → VS 코드에 붙여 넣기 → 실행

업비트의 API 가이드에 있는 "마켓 코드 조회 항목"의 샘플 코드를 그대로 복사해서 VS 코드로 가져옵니다.

그리고 VS 코드 우측 상단에 실행 버튼을 클릭합니다.

터미널에서 호출된 데이터를 확인할 수 있습니다!!

 

단순히 복사, 붙여 넣기만 했는데 모든 코인의 이름과 코드 정보를 가져왔습니다!

너무 쉬워서 당황스럽네요. 😅

 

이제 이 데이터를 어떻게 활용하면 될까요?

그리고 각각의 코드는 무엇을 의미하는 걸까요?

 

 

Step 4. API 코드 이해하기

위에서 실행시킨 전체 코드 다음과 같습니다.

1) import requests

2) url = "https://api.upbit.com/v1/market/all"

3) querystring = {"isDetails":"false"}

4) response = requests.request("GET", url, params=querystring)

5) print(response.text)

 

딱, 5 줄!

훑어보아도 그리 어려운 코드는 아닌 것 같습니다.

 

앞으로 다양한 개발을 하고 또 다른 API를 다루기 위해,

단순하고 기본적인 것부터 이해하는 단계가 필요하다고 생각합니다. 🧐

 

코드를 한 줄씩 알아봅시다.

1) import requests			#regquests 라이브러리를 가져오세요

requestshttp를 사용하기 위한 파이썬 라이브러리입니다.

쉽게 이해하자면, 웹 상에서 통신을 하고 데이터를 주고받기 위해 파이썬에서 제공하는 함수 모음집입니다.

 

 

2) url = "https://api.upbit.com/v1/market/all"		#해당 url에 데이터가 있습니다.

모든 마켓 목록 데이터가 있는 url 주소입니다.

위 주소를 웹 브라우저에 입력하면 다음과 같은 화면이 나옵니다.

 

 

Step 3. 에서 확인한 결과와 같은 내용임을 알 수 있습니다.

즉, https://api.upbit.com/v1/market/all이라는 웹 주소에 공개되어 있는 데이터를 그대로 불러온 것입니다.

 

 

3) querystring = {"isDetails":"false"}			#상세 자료 출력 유무 조건을 줄 수 있어요

데이터를 불러올 때, { } 안에 조건을 입력할 수 있습니다.

isDetails의 의미는 "유의 종목 필드와 같은 상세 정보 노출 여부"입니다.

옵션 조건이므로 삭제해도 상관없는 코드입니다. (기본값은 상세 정보를 노출하지 않는 False입니다)

만약 "isDetails":"true"로 입력하면 각 코인이 유의 종목인지 아닌지에 대한 정보가 함께 출력됩니다.

 

 

4) response = requests.request("GET", url, params=querystring)	#get방식으로 url에서 parmas조건으로 데이터 호출하세요

requests 라이브러리에서 request 함수를 사용해서 데이터를 호출하고, response라는 변수로 저장합니다.

이때, 주소는 url이고 get 방식으로 params에서 지정한 조건으로 호출하라는 의미입니다.

url 은 2번째 줄에서 지정해 주었고, params=querystring 이므로 3번째 줄에서 지정한 조건을 가져옵니다.

 

 

5) print(response.text)			#reponse를 text로 출력하세요

마지막으로 response에 저장한 데이터text 형태로 출력합니다.

 

이러한 과정으로 나온 결과가 다음과 같습니다.

 

 

필요한 데이터를 잘 불러온 것은 좋은데, 정보가 너무 많고 정신없습니다. 😱

 

그리고 눈으로 보았을 때 이 데이터는 리스트(list) 안에 딕셔너리(dictionary)가 있는 구조인데

마지막 출력 과정에서 text로 가져오는 것이 조금 이상합니다.

 

 

print(type(response.text))		#response.text의 데이터 타입이 뭔가요?

type( ) 함수로 확인 해 보니, 역시나 리스트(list)가 아닌 문자형(string)입니다.

따라서 데이터의 첫 번째 값을 불러오면...

 

print(response.text[0])

이런 어처구니없는 결과가 나옵니다. (깔깔깔)

 

 

문자가 아닌 리스트와 딕셔너리 형태로 바꿔주기 위해 구글링 한 결과,

json 모듈을 이용하여 문제 해결하였습니다.

 

5) response.json()

print(type(response.json())

print(response.json()[0])

데이터 타입리스트로 되었으며,

리스트 안에 있는 첫 번째 요소 값딕셔너리 형태로 정상 호출됩니다! 😄

 

 

 

결론적으로, 파이썬으로 API 데이터를 불러오기 위해 알아야 하는 것은 4가지로 요약하면 다음과 같습니다.

  • request 라이브러리가 필요하다.
  • API 데이터에 접근하기 위해서는 웹 주소 (url)를 알아야 한다.
  • requests.request( ) 명령어를 사용하면 된다. → requests.get( ) 또는 requests.post( )도 사용 가능합니다.
  • .json( ) 모듈로 list, dict 등의 파이썬 데이터 타입으로 변환한다.

 

 

 

 

비트코인 자동 매매 트레이딩 프로그램 만들기의 첫 단계였습니다.

생각보다 크게 어려운 건 없죠?

 

코인의 다른 정보(시세, 호가, 거래량 등) 호출 또한 위 방법과 똑같습니다.

차이 점은 데이터가 있는 url과 조건 값 정도밖에 없습니다.

 

또한 업비트 API 가이드에서 조건 값을 변경하면 샘플 코드가 같이 자동으로 변경되는 기능도

제공하고 있어 그야말로 복붙으로 거의 다 가능합니다. 

 

그런데 사실...

업비트에서 제공하는 소스코드를 훨씬 더 간편하게 사용할 수 있는 방법이 있습니다.

바로 pyupbit 라이브러리가 있어요!

세상에나, 필요한 기능을 모아서 바로바로 사용할 수 있도록 개발된 업비트 전용 라이브러리가 있다니...

멋진 분들이 많습니다. 👍

 

 

# 다음 포스팅에서는

pyupbit 설치 및 사용법과 함께

우리가 불러온 데이터의 가독성을 높여 보기 쉽게 만들어보는 방법을 알아볼 예정입니다.

 

이런 상태로는 눈알이 빠질 것 같습니다. 😵

 

효율적인 작업을 위해 표 형태로 가독성을 높이고,

저 많은 코인들 중에 정확히 필요한 코인만 검색하고 필터링하는 작업이 다음 단계입니다.

 

 

다음에 보아요, 수고하셨습니다~! 

 

 

 

# 참고 자료 링크

 

반응형