Como usar a API do MercadoBitcoin dentro do Google Sheets

in #pt3 years ago (edited)

pullMercadobitcoin.png

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:

Screenshot from 2018-10-22 12-15-05.png

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:

Screenshot from 2018-10-22 16-08-31.png

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:

Screenshot from 2018-10-22 16-56-16.png

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);

Screenshot from 2018-10-22 17-16-58.png

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:

Screenshot from 2018-10-22 17-27-25.png

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:

Screenshot from 2018-10-22 17-46-41.png

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:

Screenshot from 2018-10-22 18-00-11.png

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:

Screenshot from 2018-10-22 23-53-53.png

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