구글 스프레드시트에 코인원 API 등 활용한 크립토 포트폴리오 "CryptoFolio" 공개

in #kr7 years ago

CryptoFolio

구글 스프레드시트에 코인원 API 등 활용한 크립토 포트폴리오

사용예시



사용방법

1. 배포용 스프레드시트를 본인의 구글 드라이브로 복제합니다. (파일 - 사본만들기...)


링크주소: https://docs.google.com/spreadsheets/d/1J9bChV38mGQt22HmxLc3q8U963D9D6MPAIL7lllr5c4/edit?usp=sharing
주의! 반드시 [사본만들기]를 해주세요. 공유요청하시면 안됩니다.


2. 시트는 [WebApp], [Table], [Ticker]으로 구성됩니다.

시트별 설명

WebApp

WebApp은 최종 디스플레이되는 시트입니다.

여기 표시되는 값은 모두 [Table]의 값을 계산하여 표시하게 되어있기 때문에, 임의로 편집하면 안됩니다. 사용자가 할 수 있는 부분은 'unique' 함수로 인해 값을 자동으로 표시할 행이 부족할 경우 늘려주거나, 불필요한 행을 지워주는 정도의 액션만 취할 수 있습니다.

이 화면에서 확인 가능한 내용은 다음과 같습니다.

  • 투자주체별 지분율 및 평가금액
  • 포트폴리오별(봇, 트레이딩, 펀딩, 지갑 등) 평가금액 및 지분율
  • 봇 트레이더를 위한 봇의 지분율 중 봇별 지분율 및 평가금액
  • 커런시별 지분율 및 평가금액
  • 피아트 / 크립토의 비중도 확인 가능

이 시트가 바로 표시되게 스마트폰에 공유링크로 단축 아이콘을 빼두면 매우 편하게 포트폴리오를 확인할 수 있습니다.


Table

종목별/포트폴리오별 잔고(수량) 값을 기록해두는 데이터베이스 테이블입니다.
(시세 값은 [Ticker] 시트에서 받아오게 되기 때문에 시세는 별도로 건들지 말기 바랍니다.)

각 행은 하나의 포트폴리오의 종목을 의미하며, 여러 설정 값을 지니게 됩니다.

  • 포트폴리오타입(봇, 거래, 펀딩, 지갑 등)
  • 봇 이름(봇일 경우)
  • 커런시타입(피아트인지 크립토인지)
  • 커런시(BTC, KRW, ETH 등 고유 심볼이며, 해당 심볼은 [Ticker] 시트와 일치하는 것을 사용해야함)
  • 거래소 등 서비스명
  • 계정(여러 계정을 이용하는 경우 구분할 수 있게)
  • 링크 / 어드레스 / TXID(메모를 위해)
  • 수량(각 수량을 직접 또는 API로 입력)*
  • 가격([Ticker] 시트에서 커런시 값을 통해 자동 받아옴, KRW, BTC값이 존재)
  • 평가금액(수량*시세)

(색상음영이 있는 1, 2, 3 부분은 투자주체가 여럿일 때 지분율을 각 포트폴리오별로 다르게 설정할 수 있습니다.)

  • 지분별 투자주체 명(1, 2, 3에 해당하는 부분)
  • 지분율(Share%, 각 포트폴리오 행 별로 다르게 지정할 수 있음)
  • 지분율에 따른 수량, 투자원금, 수익금, 수익률 등이 수식으로 계산되어 표시됨

(최종적으로 모든 포트폴리오 행 별 합산된 지분율/평가금액으로 최종 투자주체별 지분율이 계산되며 해당 값은 [WebApp] 시트의 최상단에 표시됩니다.)


*잔고 등의 값은 직접 입력하거나 API로 받아와서 표시할 수 있습니다. 본 배포용 문서에서는 직접 제작한 CoinoneBalance.gs 스크립트를 통해 코인원 API로 잔고를 불러올 수 있습니다.
[도구 - 스크립트 편집기] 에서 스크립트 편집기로 이동한 다음, '이곳에 엑세스토큰, 시크릿키를 붙여넣으세요' 부분에 코인원 API(V2)값을 붙여넣으면, 자동으로 각 코인별 잔고를 받아올 수 있습니다.


CoinoneBalance.gs 스크립트 관련 안내사항

  • 코인원에서 API를 만드실 때 반드시 개인용 API V2로 만드시고, 잔고 확인 기능만 체크하시기 바랍니다.
  • 코인이 추가 상장되면 수정해줘야 새로운 종목을 표시할 수 있으며, 해당 부분은 아래쪽 코드를 보시면 쉽게 아실 수 있을겁니다.(대소문자 주의)
  • 본 스크립트는 개발자 지인의 도움을 받아 제작한 코드이며 자유롭게 활용할 수 있습니다. 단 꼭 이 문서에 Upvote를 해주시고 활용하시기 바랍니다.

그 외 본 문서에서는 ImportJson.gs 라는 스크립트를 활용하고 있는데, json 으로 불러올 수 있는 API 결과값을 쉽게 얻어올 수 있습니다. 해당 수식 내용은 [Ticker] 시트의 코인별 시세 수식을 참고하시면 이해하시기 쉽습니다.
(ImportJson.gs 스크립트는 구글 시트(Google Sheet)로 가상화폐(비트코인/이더리움/리플) 관리 https://medium.com/@sgwanlee/구글-시트-google-sheet-로-가상화폐-비트코인-이더리움-리플-관리-95b0038de4d8 에서 가져왔습니다.)


Ticker

Ticker는 [Table] 시트에서 활용하는 암호화폐별 시세를 관리하는 시트입니다.
또한, 이 시트에서 [WebApp]에 표시될 암호화폐를 디스플레이 값을 통해 지정할 수 있습니다.
(본 시트의 목적은 API 콜 수를 줄이기 위한 용도입니다.)

포트폴리오로 관리하고자하는 암호화폐가 추가되거나, 기준시세를 다른 거래소로 쓸려면 이 시트에서 수정하면 됩니다.
앞서 설명한대로, ImportJson를 활용하면 API로 시세를 쉽게 받아올 수 있을것입니다.

암호화폐별로 Display열에 1을 입력하면 [WebApp] 시트의 커런시 항목에 표시됩니다. 디스플레이되지 않는 암호화폐는 [WebApp] 시트 최하단의 Other로 모아서 표시되게 됩니다.


3. 스마트폰에서 확인하기

시트를 본인의 계정에 복사해서 포트폴리오 구성을 마쳤다면, 해당 문서의 우측 상단 [공유] 버튼을 클릭합니다.

링크가 있는 사용자만 볼 수 있게 링크를 만듭니다. 그리고 복사한 링크를 스마트폰 모바일 브라우저에서 엽니다.
[WebApp] 시트가 제대로 표시되면, 그 페이지를 홈화면에 아이콘으로 추가해둡니다. (공유버튼 - 홈화면에 추가)

이제 수시로 홈화면에 빼놓은 아이콘을 통해 포트폴리오를 확인할 수 있습니다.


장점 및 단점

장점

  • 다양한 서비스나 블록체인상의 포트폴리오를 한 곳에 모아서 확인할 수 있다는 점에서 매우 혁신적인 잔고 관리 방법이 될 수 있습니다.
  • 관심있는 암호화폐의 시세를 수시로 한번에 확인할 수 있어 편리합니다.(코인원, 빗피넥스, OKEX 티커 API 예제 지원, 다른 거래소도 조금만 시간 투자하면 쉽게 추가할 수 있습니다.)
  • 여러 투자주체의 자본(ex: 부모님 돈 등)을 끌어다 같이 운용중이라면 투자주체별 지분 관리가 가능해서 좋습니다.
  • 로그인하지 않고도 잔고를 확인할 수 있습니다.(현재 코인원 거래소만 지원)
  • 개인 지갑의 잔고도 API로 받아올 수 있습니다.(현재 비트코인, 이더리움만 지원)

단점

  • 제대로 활용하려면 API에 대한 기본 지식이 필요하고, 세팅하는게 시간이 꽤 소모됩니다.
  • 포트폴리오가 복잡해질수록 로딩이 길어질 수 있습니다.
  • 공유 링크가 털리면 잔고를 외부사람이 볼 가능성이 있습니다.(따라서 절대 개인정보를 문서상에 입력하지 마세요)

이 문서는 암호화폐를 다년간 관리하면서 필요에 의해 제작한 문서이며, 노력의 산물입니다.
부디 잘 활용해주시고 많은 Upvote 부탁드립니다.
(이 문서에서 발생한 스팀 및 스팀$는 전액 API 개발을 도와준 개발자 지인에게 전달될 예정입니다.)

감사합니다.

Sort:  

처음엔 어렵겠지만 .. 보배같은 것을 공유해주셔서 진심으로 감사합니다 .

API는 익숙치 않아 엑셀로 일일이 copy, paste하여 이력관리 하던 저로선 한줄기 빛과 같은 정보입니다. 진심 감사드립니다. app 개념 이해를 도와 주십시요.

한 개인이 몇개의 거래소를 이용하든 Table탭의 1 란에 관련 정보를 입력하면 webapp crypto polio에 개인1의 총합이 나타나고, portfolio 에서 개인1이 봇을 운영하는 몫, 직접 투자하는 몫, ICO에 참여한 몫, 월렛에 보관되어 있는 몫을 세부적으로 표현해 준다, 그리고 bot 항목에서 봇 종류별 운영 몫을 나타내 준다, 이지요? 그럼 currency의 용도는 무엇인지요? Ticker탭을 보면 현 시세를 알 수 있게 만들어 주신 듯 한데 다른 용도가 있을까요?

그리고 Table탭에서 개인의 필요에 따라 API를 수정, 추가하는 것이고, 한명일 경우에는 2,3 란은 공란으로 비워놓으면 된다, 그리고 Ticker탭은 거래소 API를 매번 불러오는 일을 줄이기 위해 만들었다 로 이해하면
되는 거죠?

죄송합니다. 개발 경험이 거의 없어서... 개념이해가 필요하여 질문 드렸습니다. ^^; 다시 한번 감사 말씀 드립니다. 덕분에 꽤나 체계적인 투자자로 행세할 수 있을 듯 합니다.

“한 개인이 몇개의 거래소를 이용하든 Table탭의 1 란에 관련 정보를 입력하면 webapp crypto polio에 개인1의 총합이 나타나고, portfolio 에서 개인1이 봇을 운영하는 몫, 직접 투자하는 몫, ICO에 참여한 몫, 월렛에 보관되어 있는 몫을 세부적으로 표현해 준다, 그리고 bot 항목에서 봇 종류별 운영 몫을 나타내 준다, 이지요?”

1행에 우측 색상음영인 1 , 2, 3란에는 투자주체의 명을 입력하시면 됩니다. 예를들어 본인자산이면 MY를 적고. 혹시나 부모님자산이 섞였다면 2에 MOM, 3에 DAD 이런식으로 적을 수 있겠고. 아래쪽 각 포트폴리오의 행에 Share%부분에만 각 자산별 지분율을 %로 적으면 됩니다.
가령 KRW봇의 행에 본인돈 1억. 엄마돈5천. 아빠돈5천 이러면 쉐어에 50% , 25%, 25%를 적으면. 해당 봇의 전체 평가자산의 %만큼씩이 합산되서 최종 투자주체별 보유자산이 테이블 상단에 표시되고, 이는 웹앱에도 표시됩니다.

—-

“그럼 currency의 용도는 무엇인지요? Ticker탭을 보면 현 시세를 알 수 있게 만들어 주신 듯 한데 다른 용도가 있을까요?”

웹앱에 커런시는. 셀을 찍어보시면 알겠지만 유니크라는 함수로 티커 시트에 디스플레이 체크된 행의 값을 표시하고, (티커시트에서 시세를 보고싶은 커런시만 디스플레이에 1적음) 해당 커런시별로 테이블시트의 모든 커런시별 수량을 체크해서 표시, 그 평가금액을 표시합니다. 자동으로 수식으로 표시됩니다.
티커 시트는 고유 커런시의 시세를 특정거래소 시세로 통일해주는 기능을 합니다. API콜을 줄인다는게, 가령 테이블 시트에 BTC도 여러 거래소에 보관할수있잖아요? 그렇더라고 그 여러 포트폴리오 행에서 각각 BTC를 불러오지 않고 티커 시트에서 BTC를 찾아서 불러옵니다. 그럼 한번만 API콜을 하고 그걸 가져다 쓰니 리소스를 아끼죠.
커런시는 웹앱 시트에 있는데 웹앱시트는 대시보드 역할을 해주고, 티커는 시세의 디비 역할을 해준다고 보시면 됩니다.

—-

“그리고 Table탭에서 개인의 필요에 따라 API를 수정, 추가하는 것이고, 한명일 경우에는 2,3 란은 공란으로 비워놓으면 된다, 그리고 Ticker탭은 거래소 API를 매번 불러오는 일을 줄이기 위해 만들었다 로 이해하면 되는 거죠?”

네 맞습니다. 테이블탭에선 잔고를 API로 불러오시고, 티커 탭에서는 시세를 API로 불러오면 됩니다.
투자주체가 한명이면 2, 3은 공란 하면 됩니다.
시세 API는 제가 빗피넥스 OKEX 코인원 받아온거 수식을 잘 연구해보시면 됩니다.

—-

“죄송합니다. 개발 경험이 거의 없어서... 개념이해가 필요하여 질문 드렸습니다. ^^; 다시 한번 감사 말씀 드립니다. 덕분에 꽤나 체계적인 투자자로 행세할 수 있을 듯 합니다.”

저도 비개발자입니다~~ 암호화폐에 대한 열정(=욕심)으로 여기까지 왔네요. 잘 활용해서 나만의 포트폴리오를 구성해보세요. 제가 제공해드린건 소스라고 보시면 되고 잘 활용해서 본인만의 것으로 쓰셔야합니다. 하드포크처럼요.