구글스프레드시트를 이용하여 거래소 실시간 가격 가져오는 API를 만들어보자 2탄

in #api7 years ago (edited)

안녕하세요. 어제 저의 포스팅이 코인코리아 트위터에 소개되었네요. 감격입니다 ㅜㅜ

1탄을 못보신 분들은 https://steemit.com/api/@ineedthesleep/api-1 를 다녀오세요.

오늘 내용은 1탄에서 소개한 기초를 응용하는 내용이라 이해가 안되실수도있으세요!!

그리고 사실 1탄에 있는 함수를 개별사용해서는 모든코인의 가격을 가져올 수 없습니다.

거래소마다 api함수가 너무 많이 호출되는 것을 막기위해 제한을 걸고 있기때문입니다.

즉, 1탄의 함수로 작성하면 화폐별로 함수가 한번씩 호출되기때문에 제한에 걸려 값을 못구해주는 불상사가 터집니다.

그렇기때문에 실제 사용하시려면 오늘 사용하는 함수를 사용해야 원할하게 사용하실 수 있습니다.

자 지금부터 2탄을 진행해보겠습니다.

예고한대로 오늘 포스팅 내용은 구글 스프레드시트를 이용하여 여러 코인의 값을 불러오는 방법입니다.

그리고 끝까지 봐주신 분들께는 보너스로 트리거(함수 자동실행 간격) 설정법을 알려드릴께요. 끝까지 함께해요!!

  1. 어제 만들었던 구글 스프레드 시트를 불러옵니다.

    데이터 로드중이라고 뜨네요. 간혹 api서버가 터져서 값이 안나오거나, 가격을 불러오는데 오래걸리는 경우가 있습니다.
    빗썸의 경우 생각보다 자주 있습니다. ㅠㅠ 감안해주셔야해요. 빗썸 사용하시는분들 아시죠?

  2. 이번에는 가상화폐를 여러개 입력해보겠습니다. 현재 리스트업 된 가상화폐들은 빗썸에서 제공하는 화폐입니다.

  3. 리스트업이라는 칸에는 각단어들을 더하고 콤마로 구분하여 화폐들을 나열해보겠습니다.
    BTC,ETH,DASH,LTC,ETC,XRP 이렇게 나열하는게 제가 하고싶은 겁니다.

    C13쉘에 BTC라고 입력합니다. 그리고 D13쉘에 =C13&","&D12라고 입력해주면 C13에 있는 문자 , D12에 있는 문자가 입력됩니다. 즉 BTC,ETH라고 입력되겠죠.

    그리고 D13쉘 오른쪽 아래에 마우스를 가져가면 십자 표시로 변경이 됩니다. 그럼 마우스를 꾹누르고 떼지않은 상태에서
    H13까지 쫙 밀고 갑니다.

    그러면 H13쉘에 제가 원했던 모든 가상화폐들이 콤마로 구분되어 나열된 것을 볼 수가 있습니다.

  4. 스크립트편집기로 들어가서 함수를 작성합니다.
    제가 뭘하려고 하는지 이해하셨나요? 아까 H13쉘에 나열된 모든 가상화폐를 콤마 구분자로 분리한다음에 각각의 현재가격을 구하는 것입니다.

    자 오늘의 함수입니다. 함수명은 getBlockChainArray2KRWByBithumb 입니다. 받아오는 변수는 콤마로 구분된 코인리스트인 arCoin입니다.
    어제의 함수와 달라진 부분 위주로 소개하겠습니다.
    21행에 주소값 끝에 특정 코인 값이 아닌 ALL이라 적혀있습니다. 이는 모든 코인 가격을 받아온다는 뜻입니다.
    또 26행에서 arCoin의 값을 콤마로 분리하여 splitResult라는 Array에 저장합니다. Array의 갯수는 화폐갯수 가 되겠죠?
    그리고 For문을 돌려서 Array의 갯수만큼 반복하여 각 화폐의 값들을 각각의 변수들에 저장합니다.
    Current는 현재가격, Opening은 24시간 전 가격, RateOfChange는 24시간 변동율입니다.
    그리고 구한 값들을 Result라는 변수에 콤마로 구분하여 AllData에 넣어줍니다. 그리고 AllData는 화폐별로 /로 구분하여 저장됩니다.
    잘이해가 되시나요? 안되시는분은 스프레드시트에 나오는 결과값을 보시면 다시 이해가 되실겁니다. 밑으로 내려와보세요.

  5. 스프레드시트에 작성한 함수를 넣고 변수로 H13의 나열된 가상화폐들이 들어있는 쉘을 넣어줍니다.

    자 그럼 화폐들 값들은 /로 구분되고 화폐들의 변동률,24시간전가격,현재가격 은 콤마로 구분된 것을 볼 수 있습니다.
    BTC변동률,BTC24시간전가격,BTC현재가격/ETH변동률,ETH24시간전가격,ETH현재가격 .....
    이렇게 나온다는거죠.
    설명이 적절한가요? ㄷㄷㄷ
    자 그럼 이렇게 나온 값들을 /로 구분해서 화폐별 정보를 구해주고 콤마로 다시한번 구분해주면 각 쉘에 원하는 가격을 채워 넣을 수 있습니다.

    먼저 화폐별로 정보를 나누기 위해 C8 쉘에 split함수를 사용하여 J13쉘의 값을 "/"로 구분해보겠습니다.(욕아닙니다 ㄷㄷ)

    그러면 이렇게 열마다 화폐 정보를 가지고 있게 됩니다.
    이렇게 나뉜 화폐정보를 콤마로 다시 구분하여 보겠습니다. 이건 제공하는 함수가 없어서 제가 함수를 다시 만들었습니다.

    a라는 문자열을 splitAlphabet이라는 구분자로 분리한 후, num번째 문자를 반환해주는 함수입니다.
    아까 썼던 함수와 동일하니 설명은 지나치겠습니다.
    이 함수를 써서 콤마 구분자로 0번째, 1번째, 2번째 문자열을 분리해주면 각 화폐의 원하는 가격들이 분리가 됩니다.

    C8쉘에 있는 값을 콤마로 구분하고 0번째 문자열을 꺼내준다는 뜻입니다.(거듭...의도한게 아닙니다.ㄷㄷㄷ)


    이렇게 각각 넣어주시고 아까 한 것 처럼 끌고 복사해주시면 됩니다.

    그러면 이렇게 필요한 정보들이 들어오게 됩니다.
    자 이제 남은 것은 안보여도 되는 정보들을 쉘바탕색과 같이 조절해서 안보이게 해줍니다.

    짠! 완료되었습니다.
    어려운듯 쉬워보이는 가상화폐 가격 불러오기 어땠나요?

그리고 여기까지 고생해서 읽어주신 분들께 선물!!

트리거 설정법입니다. 먼저 스크립트 편집기에 들어갑니다.

버튼을 살펴보시면 시계모양의 트리거 버튼이 있습니다. 이버튼을 클릭해주세요.

트리거 추가 버튼 눌러주시구요.

이렇게 설정해주시면 열기할때 마다 최신 가격으로 갱신되시구요. 더 자주 갱신됬으면 좋겠다고 생각하시는 분은 아래 사진처럼 설정해주시면 됩니다.

자 어떠신가요? 쉬운듯 어렵죠? ㅎㅎ

사실 제가 이전에 포스팅한 게시물이 있는데 거기에 제가 미리 만들어둔 엑셀을 사용만 하시면 되게 나와있습니다.

api사용이 궁금하신분은 직접 만들어보시면 되고, 사용만 하고 싶으신분은 아래 링크로 들어가시면 됩니다.

https://steemit.com/google/@ineedthesleep/42jvhr

저...이글 작성하는데 2시간 가까이 걸렸네요 ㅠㅠ

자비로우신 스티머 님들 업보트 한번씩 부탁드립니다.

3편에서는 구글스프레드 기타 꿀팁과 최종 엑셀 만드는 법을 포스팅 하겠습니다.

감사합니다. 그럼 모두 좋은 저녁되세요!!!

Sort:  

훌륭한 포스트 입니다.
리스팀해서 시도해 보겠습니다.
감사 합니다

봐주셔서 제가 감사하죠 ㅎㅎ 좋은 하루 되세요.

오와 바로 2편이라니
1편 바로 따라해보고 찬찬히 봐야겠어요
감사합니다!

하시다 잘안되는 내용이 있으면 알려주세요. 감사합니다.

감사합니다 ^^ 천천히 따라해볼게요!!!

넵 감사합니다. ^^ 잘 안되는 내용 있으면 알려주세요.

감사합니다!
이 함수를 이용하면 다른 거래소들에서도 불러올 수 있는건가요?

거래소 마다 API가 조금씩 다르지만 거의 모든거래소가 API 서비스를 지원하고 있습니다.
이용하고자 하는 거래소의 함수 정의를 입력 하시고 이용하시면 되겠습니다

3탄에서 통합 엑셀 소개와 각 거래소 별 소스를 공개해볼 생각입니다.
거래소별로 api주소와 json구조가 조금 달라서 수정이 필요합니다.
빗썸, 폴로닉스, 비트렉스 공개할꺼구요. 기대해주세요 ㅎㅎ

역시 리눅스, 윈도우 다음 위대한게 엑셀 같습니다 ㅋㅋㅋ

엑셀로 프로그래밍이라니 이제 무엇이 저희를 놀래켜줄까요? ㅎㅎ
좋은 하루 보내세요.

능력자 시군요 ^^; 업봇과 팔로우 합니다.

감사합니다. 좋은 하루 보내세요 ^^

Congratulations @ineedthesleep! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Congratulations @ineedthesleep! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of comments

Click on any badge to view your own Board of Honnor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

꼭 필요한 기능이었는데 좋은 정보 감사합니다^^

api를 이용하여 직접 매매를 시도해보신적도 있으신가요??
스프레드를 이용해 구현이 가능하다니 놀랐습니다.
몰라도 너무 몰라서 신기하네요^^

제가 구현했던 내용은 public api에 해당하는 것이고, 말씀해주신 내용은 Private api부분입니다.
이를 위해서는 api권한을 신청해야합니다. 그러면 두개의 개인 키값을 얻게되는데요.
이걸 이용하여 매매가 가능합니다. 다만 이 키값이 노출되면 그야말로 우려스러운 일이 발생하게 됩니다.
OTP없이 사고 팔고가 되는거죠. 무서워서 잔고볼수있는 권한만 시도해보고 매매 권한은 신청도 하지않았습니다. 즉, 시도안했습니다. ^^;;

그렇군요. 재정거래에 관한 글을 읽다보니 api를 이용해 자동매매 프로그래밍을 시도하신분이 있더군요. 해서 혹시 해서 여쭤봤습니다. 코딩을 좀 할줄알면 본인의 로직으로 시도해볼 수 있겠다 싶어서요
답변감사합니다

네 ㅎㅎ 저도 한번 도전해보고 싶긴하네요.
요새 어떤 분야를 공부할지 고민중입니다 ㅎㅎ

그렇군요 국내 증권사에서 계약 고객에게 제공되는 기능과 유사하군요 실시간 차익거래나 스프래드나 봇을 운영하려면 꼭 필요한 기능이 되겠군요

하긴 증권사에서도 비슷한 기능을 제공할 것 같네요. 좋은 정보 감사합니다.

안녕하세요! 알려주신 구글스프레드 api 사용법이 정말 큰 도움이 되었습니다
그런데 트리거를 설정해도 캐시때문에 새로고침이 안되는거같던데..잘 되시는지 궁금합니다.