본문 바로가기
엑셀/VBA

코인마켓캡(CoinMarketCap) API 엑셀로 적용 방법 소개 - VBA

by 큐브빌드 2021. 4. 26.
반응형

코인마켓 캡은 엄청 많은 코인 시세가 존재합니다.

 

그리고 API가 존재하기 때문에 API를 활용하여 엑셀로 정리하려고 합니다.

 

코인마켓 캡 또는 CoinMarketCap이라고 검색하면 나오는 사이트에서 API를 찾아서 들어갑니다.

 

코인마켓 캡은 API 종류가 4개 있습니다.

 

이번 글에는 Basic 무료에 관한 것만 적용해보고 아마 레퍼런스를 보고 따라 하는 방법 위주로 설명할 것이기 때문에 필요하신 분은 비싼 API를 등록하셔서 사용하시면 될 것 같습니다.

 

그러면 Basic으로 신청하면 코드 번호를 알려줍니다. 

 

해당 코드 번호는 잃어버리지 않게 잘 저장해두시구요.

 

그리고 코인마켓 캡 API는 정보 제공하는 용량이 한정되어 있습니다.

 

이메일로 일일 한도에 접근하였으며 24시간마다 초기화된다고 메일이 옵니다.

 

초과하면 데이터는 안 오지만 유료결제로 넘어가거나 하지는 않는 것 같습니다.

 

그러면 어떻게 코인마켓 캡 API를 엑셀에 적용하는지 하나씩 알아보겠습니다.

 

 

 


파이썬 코드 확인하기

파이썬 API 문서를 참고하여 VBA로 변환하여 적용했습니다.

 

Python과 Java 등 지원하지만 VB 또는 VBA는 없습니다. 

 

하지만 많이 단련되어 있어서 저는 Python의 코드를 VBA로 전환하는 형태입니다.

 

파이썬 코드를 확인하였습니다.

 

from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json

url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
parameters = {
'start':'1',
'limit':'5000',
'convert':'USD'
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
}

session = Session()
session.headers.update(headers)
try:
response = session.get(url, params=parameters)
data = json.loads(response.text)
print(data)
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)

여기서 제가 확인 가능한 부분은 

url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'

주소를 확인할 수 있습니다.

 

parameters = { 'start':'1', 'limit':'5000', 'convert':'USD' }

파라미터에 스타트 , 리미트 , 컨버터가 있습니다.

다른 건 모르겠고 컨버터 USD는 미국 달러 같습니다. 

혹시나 하는 마음에 레퍼런스 사이트에 한국돈이 있는지 찾아봤더니 KRW입니다.

 

그리고 api-key도 입력해야 됩니다~

 

마지막으로 response에 get 하는 겁니다. header도 있네요.

 

그냥 공식처럼 기억해두셔도 될 것 같습니다. 

 

컴퓨터 언어에서

Response , Get 또는 Post 한다는 것은 VBA로 winhttprequest를 사용

사실 winhttprequest 말고 xmlhttprequest를 사용해도 됩니다.

하지만 저는 winhttprequest가 손에 더 익어서 그걸 사용합니다.

 

 

 


엑셀에 적용하기

가장 먼저 엑셀 VBA에서 winhttprequest를 사용하는 준비 단계를 설정하겠습니다.

엑셀에 들어가셔서

Alt+F11 ▶ 상단 메뉴에서 도구 ▶ 참조 ▶ Microsoft WinHTTP Services , version 5.1 체크

합니다.

 

그리고 앞서 이야기했던 코드들을 이제 엑셀로 변환하겠습니다.

 

Sub CoinMarketcap()

Dim WH As New WinHttp.WinHttpRequest

Url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"
Parameters = "?start=1&limit=5000&convert=krw"
APIKEY = "abababababababababababababababab" '이런식으로 따옴표 속에 넣어주세요.

WH.Open "get", Url & Parameters
WH.SetRequestHeader "Accepts", "application/json"
WH.SetRequestHeader "X-CMC_PRO_API_KEY", APIKEY

WH.Send

ResultText = WH.ResponseText '결과값

End Sub

이렇게 하면 ResultText에 결괏값이 들어오게 됩니다.

 

이제 ResultText를 열심히 파싱 하여 결괏값을 사용하면 됩니다.

 

여기서 이제 Url과 Parameters는 어떻게 되는지 설명을 하겠습니다.

 

API에 적혀있습니다.

 

Parameters에 존재하는 값들은 전부다 Query에 관련된 값입니다.

 

다양한 웹 사이트를 돌아다니면서 Query가 시작되는 부분은 "?" 시작되며 , 각 Query별 연결은 &로 되었습니다.

 

그래서 Parameters를 그렇게 작성하였습니다.

 

이렇게 하여 대부분 API를 엑셀로 전환할 수 있습니다~! 

 

코인마켓캡.xlsm
0.01MB

 

조만간 코인마켓 캡 , Bitfinex , 업비트 등 코인 거래소의 시세를 한 번에 모아서 볼 수 있는 엑셀을 만들어 보도록 하겠습니다.

반응형

댓글