Pular para o conteúdo principal

Como usar a API do MercadoBitcoin dentro do Google Sheets

Na primeira parte da série, mostrei como acessar o Script editor e como criar um log para verificar o resultado das operações.

Bom, para começar abra o Google Sheets e acesse o Script editor, clicando em "Tools" > "Script editor" e acesse o site da API do MercadoBitcoin, clique aqui para facilitar.

Recapitulando o que teremos que fazer, vamos fazer primeiramente uma chamada a API da exchange para acessar o ultimo preço de cotação da moeda na exchange, para isso teremos que informar a criptomoeda que estamos requisitando e qual informação queremos acessar.

O formato básico de chamada da API é a seguinte URL:

 https://www.mercadobitcoin.net/api/<coin>/<method>/
 
Onde "coin" no caso do MercadoBitcoin, pode ser BTC, LTC, BCH ou XRP. E "method" pode ser do tipo "ticker", "orderbook" e "trades"

Como nosso objetivo é o preço, vamos precisar acessar o método "ticker".

Para isso vamos associar esta URL a uma variável que chamaremos de "url". Se você acompanhou a primeira parte da série, já deve ter essa linha abaixo em seu editor de script:

 var url = "https://www.mercadobitcoin.net/api/BTC/ticker"; 

E também esta aqui para exibir o conteúdo da variável:

 Logger.log(url); 

O seu editor deve estar como a imagem abaixo:


Agora vamos usar a função (comando) "UrlFetchApp" do Google Apps Script para coletar as informações da nossa variável "url".

Meus termos de computação estão meio enferrujados, não vou me detalhar muito em como cada uma desses códigos funcionam, mas basicamente, para nós entendermos um pouco, precisamos coletar e agrupar essas informações de forma que nos possibilite utilizar as mesmas de forma a retornar o valor desejado em uma célula na planilha do Google Sheets.

Continuando, após coletar os dados da API e associar a variável "url" vamos utilizar o "JSON.parse()" para reorganizar estes dados em uma array de dados para podermos especificar o que queremos utilizar.

Portanto, adicione abaixo da linha "var url = https://www.merc..." as seguintes linhas:

 var fetch = UrlFetchApp.fetch(url);
 var jsonFetch = JSON.parse(fetch);

E adicione abaixo da linha "Logger.log(url);" a comando:

 Logger.log(jsonFetch); 

Então o seu código ficará como na imagem abaixo:


Para testar o código devemos primeiramente salvar com um "Ctrl+ S" e clicar no botão "Play", indicado na figura acima, o editor de script vai pedir sua permissão para acessar o arquivo em sua conta Google, aceite, então clique no menu "View > "Log", a seguinte tela irá aparecer:

Na segunda linha do log temos o resultado do método "ticker" da API. Temos o preço de alta, baixa, preço de compra e de venda atual e o ultimo preço. Como pode ver o ultimo preço é identificado como "last=24012.000002000. Agora podemos visualizar um dado especifico da variável jsonFetch utilizando o formato "jsonFetch.ticker.last" irá retornar o ultimo preço, "jsonFetch.ticker.vol", vai retornar o volume transacionado e assim por diante.

Para isso basta alterarmos a linha:

 Logger.log(jsonFetch);
 
Por esta aqui, e teremos o ultimo preço:

 Logger.log(jsonFetch.ticker.last);

Não esqueça de salvar cada alteração e clicar no botão "Play", antes de abir o log.

Para esta função ser útil dentro do Googles Sheets devemos retornar a informação a ser exibida quando utilizamos a mesma. Adicione a esta linha ao final, antes do fecha chaves }:

 return(jsonFetch.ticker.last);

Salve e clique no "Play", vá ao Google Sheets e podemos testar a função myFunction() agora, para isso clique em uma célula qualquer e escreva "=myFunction()" sem as aspas é claro:


Agora conseguimos extrair informações da API do MercadoBitcoin com esta função, mas precisamos também ter a possibilidade de enviar um parâmetro para esta função para podermos especificar qual a moeda que queremos visualizar o preço.

Para isso vamos adicionar um parâmetro e chamaremos ele de "coin" e que servirá para especificarmos qual moeda queremos saber o preço.

Na linha:

 function myFunction() {

Adicionamos o parâmetro "coin" dentro dos parênteses:

 function myFunction(coin) { 

Agora dentro da planilha do Google Sheets podemos enviar este parâmetro para a função myFunction(), como o parâmetro "coin" será do tipo string, devemos adicionar ele entre aspas como mostra a figura:

 

Para testar se esse parâmetro foi enviado para a função, podemos adicionar um log para o parâmetro "coin" que agora pode ser tratado como uma variável dentro da função. Somente para testar, altere a ultima linha de retorno para:

 return(coin); 

Agora ao invés da função retornar o ultimo preço, deverá retornar a palavra "BTC", porque foi isso que enviamos como parâmetro:



Bom, como no caso do MercadoBitcoin existe uma URL para cada criptomoeda, vamos ter que dividir esta URL em três partes usando três variáveis diferentes que são a "url", "coin" e a "ticker" que teremos que concatenar em uma única variável que chamaremos de "urlCoin".

  function myFunction(coin) {
      var url = "https://www.mercadobitcoin.net/api/";
      var ticker = "/ticker/"
      var urlCoin = url+coin+ticker

Sendo que a variável "coin" será o parâmetro para a função que será escolhida pelo usuário.

A variável "urlCoin" irá juntar as variáveis "url", "coin" e "ticker" formando a URL de chamada para a API.

Segue código completo, (renomeei a função para "getMercadobitcoin") para copiar e colar:

 function getMercadobitcoin(coin) {
      var url = "https://www.mercadobitcoin.net/api/";
      var ticker = "/ticker/"
      var urlCoin = url+coin+ticker
      var fetch = UrlFetchApp.fetch(urlCoin);
      var jsonFetch = JSON.parse(fetch);
  
      Logger.log(url);
      Logger.log(jsonFetch);
      Logger.log(jsonFetch.ticker.last);
      return jsonFetch.ticker.last
 }

Acho que agora temos a função completa para acessar o ultimo preço de qualquer moeda da exchange MercadoBitcoin.

Quando você clicar no "Play" para compilar o código o editor de script vai lhe informar que existe uma chamada não definida, é a variável "coin" que precisa ser definida pelo usuário, não se preocupe que mesmo assim a função vai funcionar, segue imagem de teste:


Para usar a função, basta digitar em alguma célula da planilha a formula "=getMercadobitcoin("BTC") e substituir o "BTC" pela moeda desejada.

Com mais trabalho, podemos adicionar mais parâmetros de entrada como data e volume, para saber o preço e volume em algum dia no passado, poderíamos montar planilhas com os preços e volumes históricos e plotar gráficos como os do Tradingview (similar), calcular o desvio padrão e também plotar gráficos futuros usando o método de Monte Carlo para executarmos simulações.

Deixe seus comentários, duvidas e sugestões de artigos futuros, ficarei grato em ajudar!

Meu blog http://assuntotecnologia.com.br  

Meu Steemit https://steemit.com/@assuntotech  

Twitter https://twitter.com/AssuntoT

Minds https://www.minds.com/carlosgb

Comentários

Postagens mais visitadas deste blog

Como puxar o preço das criptomoedas dentro do Google Sheets

Hoje começarei a escrever uma serie de pequenos artigos demonstrando como extrair informações das exchanges de criptomoedas. Bom, a muito tempo uso um add-ons no Google Sheets chamado CryptoFinance , que consegue puxar os preços de TODAS as criptomoedas que estão no CoinMarketCap e também o preço diretamente nas principais exchanges. Usando uma sintaxe super simples, se consegue extrair o preço de qualquer criptomoeda ou token. Usando a formula =CRYPTOFINANCE("ETH/BTC") se consegue puxar o preço do Ethereum em Bitcoin por exemplo. Mudando o "BTC" para "USD" se puxa o preço em Dolar, "BRL" se consegue o preço em Real e até se consegue puxar o preço do Ethereum por exemplo em relação a qualquer outra criptomoeda. Quanto custa o Ethereum em Dogecoin? Basta colocar na formula "ETH/DOGE". Ou seja é um add-on indispensável para se acompanhar o portfólio de criptomoedas em uma planilha, mas hoje, dia 19 de outubro o Coinmarketcap res...

Steemit para o usuário de facebook?!?

Acabei de pagar para criar esta conta que estou usando agora no Steemit, paguei em torno de 0.07 LTC (litecoin), mas na verdade como tinha somente 0.13 LTC na minha conta na Bittrex, acabei depositando os 0.13 LTC que pagaram a conta e o restante ficou de saldo na minha carteira do steemit. Usei o site BlockTrades  https://blocktrades.us/create-steem-account  para criar a conta. Como mostra no site se depositarmos a menos do valor necessário para a criação da conta o valor seria embolsado pelo BlockTrades, se for depositado a mais o valor restante seria convertido para STEEM e cairia na carteira da Steemit. Mas como explicar que para abrir uma conta em uma rede social o usuário leigo teria que pagar para isso e ainda gravar uma linha gigantesca como senha?!? Havia tentado abrir a conta gratuita mas como já tenho uma conta pessoal antiga e que não uso mais no Steemit e que tinha registrado meu TELEFONE, não consegui criar a conta gratuita, pois para criar a conta g...