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

in #api7 years ago (edited)

안녕하세요 Saturday입니다.

1탄과 2탄은 매우 빠르게 썼는데, 3탄이 늦었습니다.

저의 필살기와 같은 api글이기에, 폴로닉스의 스팀을 충전한 뒤, 이 글을 쓰고 싶었습니다 :)

드디어 폴로닉스의 스팀 출금 제한이 풀렸네요. 모두 기쁘시죠? ㅎㅎ

저도 방금 쌓아뒀던 스팀을 충전했습니다!! 이 글을 완성하고 저의 보팅파워를 테스트 해보고 싶네요 :)

제가 지난번에 작성하였던 api글은 다음과 같습니다.


1탄 api 함수의 원리 설명,


2탄 api 함수를 활용하여 거래소의 여러 가상화폐 가격 받아오기

그리고 오늘은 거래소의 가상화폐가격을 이용해서 내가 투자한 가상화폐의 가격을 총 결산하는 방법에 대한 내용입니다.

더불어 제가 작성했던 api 코드들도 공개하고 google spreadsheet에서 사용할 수 있는 google finance 함수도 간단히 다뤄볼까 합니다.

이걸 활용하시면, 주식 가격도 주식앱 없이 실시간으로 볼 수 있는 spreadsheet를 작성하실 수 있습니다.

자 그럼 지난번에 작성했던 엑셀화면을 보시죠.

여기서 현재 가격을 알 수 있고 현재가격의 밑에 내가 현재 가진 화폐 갯수를 입력해봅니다.

그리고 SUMPRODUCT란 함수를 이용하여 현재가격과 내가 가진 화폐갯수를 곱해서 자동으로 더하는 함수를 사용합니다.

참 쉽죠? 우리가 가진 총액이 나옵니다.

궁금하신분들은 직접 더해보셔도 됩니다. 날짜에는 TODAY함수를 쓰면 오늘 날짜가 자동으로 나오게 됩니다.

그리고 해당 거래소에서 가진 코인수를 누적으로 보고 싶다면, 혹은 가격을 누적으로 보고 싶다면 해당 정보를

날짜를 기입하고 아래로 쌓아 나가시면 되겠습니다.

쌓아나가실때, 주의하셔야 할 점이 있습니다. I13 같은 경우에는 SUMPRODUCT라는 함수가 걸려있습니다.

ctrl+c로 복사하고 ctrl+v로 붙여넣기를 하면 함수까지 같이 복사가 되어서 잘못된 값이 기록될 것입니다.

그리고 현재 가격을 곱해서 하기때문에 기록이 목적이시라면 값만 복사해서 붙여넣는 것이 맞습니다.

이럴 때는 ctrl+c로 복사를 해서 ctrl+shift+v를 눌러서 붙여넣기를 하면 현재의 가격만 복사할 수 있습니다.

위와 아래의 차이가 보이시나요? 밑에는 함수가 없이 값만 복사가 되었습니다.

자 그럼 제가 사용한 함수들을 첨부해 드리겠습니다.


// 블럭체인투자 자바스크립트함수 공유용 소스
// 제작자 : 오늘은토요일 [email protected]
// 수정하여 개인 사용은 가능하나 무단 배포 금지
// bithumb 가상화폐 1개 BTC환율 return함수
function getBlockChain2KRWByBithumb(coin) {

if(coin==null)
{
coin = "BTC";
}
var url = "https://api.bithumb.com/public/ticker/"+coin;
var response = UrlFetchApp.fetch(url);
var test = response.getContentText();
var myjson = JSON.parse(test);
var KRW_value = myjson["data"]["closing_price"];
return parseFloat(KRW_value);
}
// bithumb 가상화폐 여러개 BTC환율로 return함수
function getBlockChainArray2KRWByBithumb(arCoin)
{
var url = 'https://api.bithumb.com/public/ticker/ALL';
var response = UrlFetchApp.fetch(url);
var test = response.getContentText();
var myjson = JSON.parse(test);
var splitResult = arCoin.split(",");
var AllData="";
for(var i=0;i<splitResult.length;i++)
{
var strCoin = splitResult[i];
var Current = parseFloat(myjson['data'][strCoin]['closing_price']);
var Opening = parseFloat(myjson['data'][strCoin]['opening_price']);
var RateOfChange = (BTC_Current-BTC_Opening)/BTC_Opening;
var Result = RateOfChange+','+Opening+","+Current;
AllData = AllData+'/'+Result;
}
return AllData;
}

// poloniex 가상화폐 1개 BTC환율 return함수
function getBlockChin2BTCByPoloniex(coin)
{
if(coin==null)
{
coin = 'ETH';
}
var api_host = 'https://poloniex.com/public?command=returnTicker';
var response = UrlFetchApp.fetch(api_host);
var test = response.getContentText();

var myjson = JSON.parse(test);
var strCoin = 'BTC_'+coin;
var BTC_value = myjson[strCoin]['last'];
return parseFloat(BTC_value);
}
// 문자열 분리함수 num번째 문자를 꺼내줌
function returnSplitValue(a,splitAlphabet,num)
{
var splitResult = a.split(splitAlphabet);
var result = 0;
for(var i=0;i<splitResult.length;i++)
{
if(i==num){
result = splitResult[i];
}
}
return parseFloat(result);
}

// poloniex 가상화폐 여러개 BTC환율로 return함수
function getBlockChainArray2BTCByPoloniex(arCoin)
{
var api_host = 'https://poloniex.com/public?command=returnTicker';
var response = UrlFetchApp.fetch(api_host);
var test = response.getContentText();
var myjson = JSON.parse(test);
var splitResult = arCoin.split(",");
var AllData="";
for(var i=0;i<splitResult.length;i++)
{
var strCoin = 'BTC_'+splitResult[i];
if(splitResult[i] == "BTC") strCoin = "USDT_BTC";
var BTC_Current = parseFloat(myjson[strCoin]['last']);
var BTC_RateOfChange = parseFloat(myjson[strCoin]['percentChange']);
var BTC_Result = BTC_RateOfChange+','+BTC_Current;
AllData = AllData+'/'+BTC_Result;
}
return AllData;
}
// bitrexx 가상화폐 여러개 BTC환율로 return함수
function getBlockChainArray2BTCByBitrexx(arCoin)
{
var api_host = 'https://bittrex.com/api/v1.1/public/getmarketsummaries';
var response = UrlFetchApp.fetch(api_host);
var test = response.getContentText();
var myjson = JSON.parse(test);
var splitResult = arCoin.split(",");
var AllData="";
for(var i=0;i<splitResult.length;i++)
{
var strCoin = 'BTC-'+splitResult[i];
if(splitResult[i] == "BTC") strCoin = "USDT-BTC";
for(var coinNum =0;coinNum<myjson['result'].length;coinNum++)
{
var marketname = myjson['result'][coinNum]['MarketName'];
if(marketname == strCoin)
{
var BTC_Current = myjson['result'][coinNum]['Last'];
var BTC_Opening = myjson['result'][coinNum]['PrevDay'];
var BTC_RateOfChange = (BTC_Current-BTC_Opening)/BTC_Opening;;
var BTC_Result = BTC_RateOfChange+','+BTC_Current;
AllData = AllData+'/'+BTC_Result;
break;
}
}
}
return AllData;
}


이제 이 함수들을 이용하여 빗썸, 폴로닉스, 비트렉스 거래소의 가격을 실시간으로 가져오는 시트를 구성하실 수 있습니다.


그럼 이 거래소에 가지고 있는 총합을 구하는 시트를 만들어 보겠습니다.

방법은 간단합니다. 총합 금액을 가지고와서 더해주기만 하면 됩니다.

추가로, 증권을 하시는 분들이 응용하기좋을 google finance 함수 사용법 공유해드립니다.

GOOGLEFINANCE("USDKRW","price",B20) 는 B20에 있는 날짜의 달러환율을 가지고 오는 함수입니다.
그리고 이걸 그대로 하면 2*2영역에 가격을 가지고 오는데 이 중에 2,2에 위치한 가격만 가져오기위해 INDEX함수를 사용하였습니다.

짜잔 오늘의 환율이 불러와졌습니다.

INDEX함수를 사용하지 않으면 다음과 같이 나옵니다.

자 그럼 주식값을 알고 싶으시다면 USDKRW자리에 해당 주식의 코드명을 넣으시면 됩니다.

삼성전자의 코드명을 복사해서 넣으시면,

이렇게 삼성전자의 현 가격이 나오게 됩니다.

주식을 하시는분들은 이걸 활용하셔도 큰 도움이 되시겠죠?

오늘의 포스팅은 여기까지 입니다.

api를 이용하여 가상화폐 거래소의 총 잔액을 구하기 시리즈가 모두 끝났습니다.

도움이 되었어야 할텐데 걱정이네요 :)

만약 완성본을 보고 싶으신분들은 https://steemit.com/google/@ineedthesleep/42jvhr

이 게시글로 가셔서 사용법 습득 및 완성본 파일을 가져가시면 됩니다.

즐겨봐주신 스티머들 모두 감사합니다.

재미있게 보셨다면 follow와 upvoting 부탁드립니다.

좋은 주말 보내세요 ^^

Sort:  

대단하십니다.

읽어주셔서 제가 감사하죠 ^^

안녕하세요 ineedthesleep님, 와우 놀랍네요.. 이걸 따라할 수 있을까 모르겠습니다. 이런 고급 정보를 제공해 주셔서 참으로 감사하네요. 천천히 공부하면서 따라해 보도록 하겠습니다. 편안한 밤 되시길 바랍니다.
참 제가 보팅레이트 관리를 못해서 너무 낮아서 지금 해 드려도 티도 안나네요.. 3~4일 정도 충전후 꼭 보팅 해 드리도록 하겠습니다. 죄송합니다.

실제로 해보시면 그렇게 어렵지 않아요 ㅎㅎ
저도 성민님 필리핀 인생스토리 감동받으며 읽었는데요.
저도 위기가 닥쳐왔을때 성민님처럼 잘 대처할 수 있으면 좋겠네요.
앞으로도 좋은 이야기 부탁드립니다 ^^

아.. 네 감사합니다. 나이가 조금씩 들어갈 수 록 인간관계에 대한 중요성을 많이 느낌니다. 선조님들 말씀 하나 틀린게 없는것 같아요. 사람이 곧 재산이다,
ineedthesleep님도 원만한 인간관계를 하실 거라고 믿어 의심치 않습니다. 편안한 밤 되시길 바랍니다~~

와 정말 대단하시네요 감사합니다.^^

^^ 좋은 하루 보내세요.

엑셀로 잘하면 완전 툴처럼 만들어 쓸수도 있겠네요
^^

재미있게 보고 갑니다.

엑셀과 기본적인 함수는 동일하지만 이건 googlespreadsheet라고 해서 구글의 함수도 사용할 수 있고
코딩언어가 조금 달라요 ㅎㅎ
잘봐주셔서 감사합니다 ^^

별써 다움편이 기대되는군요 계속 응원드립니다