업비트가 런칭된 이후 업비트로 거래소를 옮긴 분들이 많은것 같네요. 저 역시 비트렉스, 빗피의 모든 돈을 업비트로 옮겨서 투자중인데요, 사용하면서 다소 불편했던 점이 하나 있습니다. 바로 모든 거래내역이 KRW 기준으로 환산되서 표시된다는거죠. 뭐 원화 기준으로 투자 손익을 구분하는게 중요하긴 하지만 저처럼 비트코인 자체 코인수를 늘리기 위해 알트코인에 투자하는 분들에게는 KRW 기준으로 자동 환산되서 보이는 업비트의 "투자내역" 기능이 상당히 불편합니다. 특히 지금처럼 비트코인이 쭉 상승세를 타고 있을때는 내가 도대체 알트코인으로 이득을 보고 있는건지 아니면 걍 비트코인으로 나뒀으면 더 벌었을건지를 분간하는게 쉽지 않죠...
그래서 구글 시트에다가 거래할때 마다 거래시 사용한 BTC 금액과 현재 기준 비트코인 기준가격을 비교해 가며 일일이 계산하는 노가다를 하고 있었는데요, 노가다는 최대한 자동화 하고 사람은 보다 창의적인(?) 투자..(투기..?)에 집중해야겠죠 ㅎㅎㅎ 제가 개발자는 아니기에 문돌이의 가장 강력한 도구인 구글시트 (또는 엑셀)를 활용해서 각 코인의 BTC 기준가를 자동으로 불러와서 계산하는 방법을 고민하게 되었습니다.
그런데 구글시트에서 제공하는 기본적인 웹 크롤링 함수인 importxml이나 importhtml등등은 업비트처럼 자바스크립트 기반으로 데이터가 라이브로 업뎃되는 사이트의 경우 해당 함수를 사용하는게 불가능 합니다. 결론은 API로 제공되는 json을 불러와야 하는데요, 업비트는 아직 API를 제공하지도 않죠... 근데 사실 생각해보니 업비트의 모든 데이터는 비트렉스 기반이고, 비트렉스는 당연히 API를 제공하고 있죠.
그래서!! 비트렉스 API를 활용해서 구글시트로 간단하게 만들어 봤습니다. 일명, "업비트 비트코인 투자내역 계산기" 입니다.
https://docs.google.com/spreadsheets/d/13HPHKvsyAv4zHu_SXhwlS86XrwXwsYgJUonmuLvPykE/edit?usp=sharing
사용방법은 간단합니다.
위 구글시트를 "Make a copy" 해서 본인 구글시트로 복사하세요.
아래 보시다시피 A-D 칼럼에 본인이 투자한 코인 정보를 기록하세요. 업비트의 "거래내역" 탭에서 코인 심볼코드, 매입한 코인 수, 매입시 BTC 거래단가 이 3개만 입력해 주시면 됩니다. 아, 그리고 상단에 본인의 BTC 거래 수수료를 꼭 업데이트 해주세요.
E~H 칼럼에는 제가 수수료까지 감안해서 함수를 이미 입력해 놨습니다. 그냥 건들지 말고 계속 복사해서 사용하시면 됩니다.
자, 이 단계가 가장 중요한데요, 메뉴 탭에서 Tool>Script Editor를 클릭하세요.
위 버튼을 클릭하면 아래와 같은 스크립트 창이 하나 뜰텐데요, 겁먹지 마시고 아무것도 건들지 말고 그냥 사진에 보이는 저장 버튼만 눌러주세요. 저 버튼을 누를때 마다 본인 구글시트의 importJSON 함수가 리프레시 되면서 최근 가격정보가 업데이트 됩니다.
(저 위의 디스크 모양 버튼입니다)
제가 만든 구글시트는 importJSON이라는 누군가가 만들어놓은 스크립트를 복붙해서 사용하고 있는데요, 아까도 말씀드렸듯이 저는 개발자가 아니라서 위 함수에 자동으로 업뎃되는 코드를 추가하려 시도는 해봤으나 잘 안되더군요ㅜㅜ (트리거도 추가해 봤는데 잘 안되네요..) 그래서 임시방편으로 그냥 수동으로 리프레시를 해주는건데 그래도 개인용으로 사용하는데 큰 문제는 없습니다.
혹시 이 글을 보시는 개발자느님께서 저기에 어떤 코드를 추가하면 자동으로 1분마다 업뎃을 해주는지 알려주시면 매우매우 감사하겠습니다 ㅎㅎㅎ
시간에 따른 업데이트는 google script 화면에서 시계 모양 아이콘을 클릭하셔서 트리거 설정하시고 해당 트리거에 실행할 함수를 선택하면 되실겁니다.(지금 화면을 보면서 말씀드리는 것은 아니라서 약간 다를 수 있을 것 같습니다.)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
네 설명 감사드립니다. 트리거 설정을 이것저것 돌려가며 해봤는데 안되더군요..ㅜ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
안녕하세요. 약간의 도움을 드릴까 합니다. 구현된 내용을 보니 구글스크립트로 커스텀 함수를 구현했네요. 제공되는 함수가 있는데, 각 코인별 파싱을 하기 위해 추가적인 작업이 들어간 듯 합니다. 기본적으로 외부 데이터 함수의 업데이트
시간은 ImportHtml, ImportFeed, ImportData, ImportXml: 1 hour 이라고 되어 있습니다. 1분 마다 업데이트하는 편법은 아래와 같습니다.
bittrex-api 시트의 파라미터 값에 시간 인자를 분 마다 업데이트 해주는 함수입니다. 트리거를 1분마다 updatetime함수에 걸면 ?&market= 에서 ?time=20171227134627&market= 형태로 셀 값이 바뀌면서 importJSON함수가 리 로딩 되어 전체 값을 업데이트 해줍니다.
function updatetime(){
var et = new Date();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("bittrex-api");
var rg = sheet.getRange("B4");
var tt = Utilities.formatDate(et, 'GMT+9', 'yyyyMMddHHmmss');
tt = "?time="+tt+"&market=";
rg.setValue(tt);
}
추가 설명이 필요하시면 댓글 주시면 됩니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
이렇게 좋은 글을 이제야 발견합니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit