코인은 거래소 마다 가격이 다릅니다.
그래서 한국에서 대표할 수 있는 코인 거래소 3개의 코인 가격을 엑셀로 비교할려고 합니다.
진행 방법은 아래와 같습니다.
기준 코인은 업비트로 선정하였습니다.
1. 각 거래소 마다 모든 코인 가격을 시트별로 정리합니다.
2. 3개 거래소에 모두 존재하는 코인만 별도의 시트로 정리합니다.
이렇게 VBA로 적용하여 정리해볼려고 합니다.
업비트 시세 조회
해당 부분은 벌써 블로그에서 API를 사용하여 작성했던적이 있기 때문에 설명은 넘어가겠습니다.
업비트 api 활용 모든 코인 시세 정리하기 - VBA (tistory.com)
여담이지만 업비트는 Ticker를 사용하여 모든것을 불러오는걸 찾지 못해서 쉼표로 하나씩 연결해서 붙여야 했습니다.
코인원 시세 조회
코인원 API로 검색하시면 코인원 API에 관련된 문서를 찾을수 있습니다.
역시나 레퍼런스를 찾다보면 답이 나옵니다.
업비트에서도 Ticker였는데 코인원에서도 Ticker를 이용하겠습니다.
QUERY가 currency 입니다.
그래서 주소로 그냥 테스트를 해봤습니다.
https://api.coinone.co.kr/ticker?currency
했더니 기본값인 BTC에 대해서 노출 됩니다.
어떻게 하면 모든 코인이 나올지 막무가네로 Query에 값을 변경해봤습니다.
https://api.coinone.co.kr/ticker?currency=all
이렇게 작성하였더니 모든 코인이 노출됩니다.
※ 사실 정확히는 all이 아니라 매칭되는 코인이 없으면 전부다 response 되는 행운을 발견했습니다.
Response 된 값은 아래처럼 정리 된다고 되어있습니다.
각 코인의 시작이 Currency 이기 때문에 Currency로 파싱
그러면 해당 값들을 들고와서 엑셀에다가 파싱하여 정리하면 됩니다.
파싱 규칙은 보고 습득해야 되는거지만 제가 일단 파싱한 방법입니다
split(결과값 , "currency")
을 사용하였습니다.
그러면 1줄 = 코인1개 정보가 됩니다.
그렇게 VBA 코드를 작성한 부분입니다.
Sub CoinOne()
Dim WH As New WinHttp.WinHttpRequest
Cells.ClearContents
Cells(1, 1).Resize(1, 3) = Array("심벌", "코인명", "가격")
WH.Open "get", "https://api.coinone.co.kr/ticker?currency=all"
WH.SetRequestHeader "user-agent", "Windows10"
WH.Send
WH.WaitForResponse
result = Split(Replace(WH.ResponseText, """", ""), "currency")
For i = 1 To UBound(result)
CoinSymbol = Mid(result(i), 2, InStr(result(i), ",") - 2)
DummyText = Split(result(i), "last")
CoinPrice = Mid(DummyText(1), 2, InStr(DummyText(1), ",") - 2)
Cells(i + 1, 1).Resize(1, 3) = Array(CoinSymbol, "", CoinPrice)
Next
End Sub
빗썸 시세 조회
빗썸 API를 똑같이 찾았습니다.
그리고 빗썸은 ticker에 현재 거래 가격이 없기 때문에 orderbook을 사용했습니다.
orderbook에는 구매 요청되어 있는 가격 , 판매 요청되어 있는 가격이 있습니다.
그중에서 파싱하기 편한 구매 요청 가격 중 가장 높은 가격으로 했습니다.
https://api.bithumb.com/public/orderbook/{order_currency}_{payment_currency}
이렇게 입니다.
order_currency 에는 all을 넣게 되면 전체가 나온다고 합니다.
payment_currency에는 환전 될 단위니 대한민국이라서 KRW를 사용하게 됩니다.
그러면 주소는 역시나
https://api.bithumb.com/public/orderbook/all_krw
가 되겠습니다.
response값을 기준으로 코인의 시작이 order_currency 입니다.
split(결과값 , "order_currency")
을 사용하였습니다.
대부분 다 비슷한 형태입니다.
파싱 코드까지 모두 포함되었습니다.
Sub bithumb()
Dim WH As New WinHttp.WinHttpRequest
Cells.ClearContents
Cells(1, 1).Resize(1, 3) = Array("심벌", "코인명", "가격")
WH.Open "get", "https://api.bithumb.com/public/orderbook/all_krw"
WH.SetRequestHeader "user-agent", "Windows10"
WH.Send
WH.WaitForResponse
result = Split(Replace(WH.ResponseText, """", ""), "order_currency")
For i = 1 To UBound(result)
CoinSymbol = Mid(result(i), 2, InStr(result(i), ",") - 2)
DummyText = Split(result(i), ",asks:[{price:")
CoinPrice = Mid(DummyText(1), 1, InStr(DummyText(1), ",") - 1)
Cells(i + 1, 1).Resize(1, 3) = Array(CoinSymbol, "", CoinPrice)
Next
End Sub
공통 코인 정리하기
업비트 기준으로 공통 코인을 정리하였습니다.
해당 엑셀파일의 실시간 정리 버튼을 누르면 정리되어서 나타나게 됩니다.
생각보다 3개 마켓은 가격차이가 나지 않습니다.
VBA 코드는 암호가 걸려있으며 리플 달아주시면
알려드리겠습니다.
'코인 > 업비트API' 카테고리의 다른 글
VBA 일정 시간 간격으로 업비트 코인가격 갱신하기 (0) | 2021.05.02 |
---|---|
업비트 연속 양봉 또는 음봉 일 때 핸드폰 알람 프로그램 - 오토핫키+텔레그램 (1) | 2021.05.01 |
API사용 업비트 와 글로벌 시세(BITFINEX) 시세 함께 확인하기 - VBA , 엑셀 (0) | 2021.04.22 |
업비트 api 활용 내 보유 코인 정리 - VBA , 엑셀 (1) | 2021.04.15 |
업비트 api 활용 모든 코인 시세 정리하기 - VBA (2) | 2021.04.14 |
댓글