Covalent, una API única para un millón de posibilidades. Uso para obtención de precios históricos.

peloclick
5 min readMay 16, 2021

Introducción:

En este tutorial vamos a aprender cómo podemos obtener el precio histórico de una criptomoneda, mediante el uso de dos servicios distintos:

- Mediante el siguiente servicio, indicando el id de la cadena y una o varias direcciones de contrato:

https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/{{chain_id}}/{{quote_currency}}/{{contract_addresses}}/

- Mediante el siguiente servicio, indicando únicamente el símbolo identificativo de la criptomoneda:

https://api.covalenthq.com/v1/pricing/historical/{{quote_currency}}/{{ticker_symbol}}/

Servicio /pricing/historical_by_addresses_v2:

Debemos utilizar una url con la siguiente estructura:

https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/{{chain_id}}/{{quote_currency}}/{{contract_addresses}}/

Los parámetros de la url son:

  • {{chain_id}}: Es el identificador de la cadena. Representa la red a utilizar. Actualmente las redes compatibles son las siguientes:
  • {{quote_currency}}: Es el identificador de la moneda en la que se desean obtener los precios. Actualmente las monedas compatibles son:

- {{contract_addresses}}: Es la dirección del contrato que identifica a la criptomoneda dentro de la red indicada previamente. Puede indicarse una única dirección, o varias de ellas separadas por una coma.

Esta dirección puede obtenerse de diferentes maneras. Por ejemplo, utilizando la web

https://coinmarketcap.com/

Buscamos la criptomoneda que queramos. Por ejemplo, en el caso de Uniswap (UNI) podemos obtener su dirección de contrato en las diferentes redes en las que está presente: Ethereum, Binance Smart Chain, Polygon…

Una vez conozcamos los parámetros anteriores, podemos construir nuestra url. Como ejemplo determinaremos el precio histórico en USD de la criptomoneda Uniswap, en la red Binance Smart Chain, para el día actual:

https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/56/USD/0xbf5140a22578168fd562dccf235e5d43a02ce9b1/

La respuesta que obtenemos es la siguiente:

En “data” obtenemos un array de elementos: tantos elementos como direcciones de contrato hayamos solicitado. En nuestro ejemplo, sólo obtenemos información asociada a un contrato (Uniswap). Dentro del campo data tenemos:

- contract_decimals: número de decimales asociados al contrato.
- contract_name: nombre del contrato.
- contract_ticker_symbol: símbolo asociado al contrato.
- contract_address: dirección del contrato.
- support_erc: redes soportadas por el contrato.
- logo_url: url con el logo del contrato.
- update_at: hora de generación de la respuesta actual
- quote_currency: moneda en la que se muestra el precio
- prices: array que contiene los diferentes precios solicitados. Un precio histórico para cada día solicitado.
— date: día asociado al precio histórico.
— price: precio histórico de la criptomoneda.

Adicionalmente, mediante el uso de diferentes parámetros de petición, podemos modificar la petición anterior:

- from: día de comienzo de un rango de días en los que se solicita precios históricos.
- to: día de fin de un rango de días en los que se solicita precios históricos.
- prices-at-asc: el array de precios por defecto se ordena en orden temporal descendente. Si indicamos este parámetro, el array será devuelvo en orden temporal ascendente.
- format: si deseamos obtener la respuesta en formato csv en lugar de una respuesta JSON.
- page-number y page-size: se utilizan para paginar los resultados, pudiéndose así dividir una única respuesta en varias respuestas más ligeras.

Por ejemplo, podemos ampliar la petición del ejemplo previo indicando un periodo concreto de dos días en los que queremos conocer el precio histórico, así como indicar que queremos los resultados de precios ordenados de manera temporal ascendente:

https://api.covalenthq.com/v1/pricing/historical_by_addresses_v2/56/USD/0xbf5140a22578168fd562dccf235e5d43a02ce9b1/?from=2021-05-14&to=2021-05-15&prices-at-asc=true

El resultado devuelto (extracto) es:

Servicio /pricing/historical:

Debemos utilizar una url con la siguiente estructura:

https://api.covalenthq.com/v1/pricing/historical /{{quote_currency}}/{{ticker_symbol}}/

Los parámetros de la url son:

  • {{quote_currency}}: Es el identificador de la moneda en la que se desean obtener los precios. Actualmente las monedas compatibles son
  • {{ticker_symbol}}: Es el símbolo de la criptomoneda de la que queremos obtener precios históricos.

Una vez conozcamos los parámetros anteriores, podemos construir nuestra url. Como ejemplo determinaremos el precio histórico en USD de la criptomoneda Uniswap (UNI), para el día actual:

https://api.covalenthq.com/v1/pricing/historical/USD/UNI/

Obtenemos una respuesta con la misma estructura que teníamos en el servicio /pricing/historical_by_addresses_v2.

Al igual que en ese servicio, también pueden añadirse los mismos parámetros adicionales a la petición para modificarla:

- from: día de comienzo de un rango de días en los que se solicita precios históricos.
- to: día de fin de un rango de días en los que se solicita precios históricos.
- prices-at-asc: el array de precios por defecto se ordena en orden temporal descendente. Si indicamos este parámetro, el array será devuelvo en orden temporal ascendente.
- format: si deseamos obtener la respuesta en formato csv en lugar de una respuesta JSON.
- page-number y page-size: se utilizan para paginar los resultados, pudiéndose así dividir una única respuesta en varias respuestas más ligeras.

Como podemos ver, las posibilidades de Covalent para precios históricos son muy amplias y, además, la API funciona con mucha velocidad.

Puedes obtener más información sobre la API de Covalent en:

Y algunos ejemplos de uso en:

https://www.covalenthq.com/docs/

--

--