jueves, 23 de diciembre de 2021

Probando la API de Binance con Python - Día 1

 

Hace mucho tiempo que no escribo en este blog porque despues de lanzar la APP para iPhone y analizar el feedback decidí aparcarlo para dedicar los esfuerzos a otros proyectos.

Ahora que el mundo de las cryptomonedas está en boca de todo el mundo he decidido retomar los proyectos relacionados con las herramientas para trading. El primer paso que he querido dar es el de probar la conexión a la API de un trader, es este caso el de Binance que permite crear una cuenta de prueba para poder "jugar". 

Para empezar, contestaremos a la pregunta de ¿Qué es la API de Binance? 




Una API (Application Programming Interfaces) es una interfaz que permite la comunicación con el servicio a través de un lenguaje de progración. Para este caso Binance tiene una API RESTfil que usa peticiones HTTP a través de Python para enviar y recibir datos. Además tambien tiene un socket web que permite el streaming de datos como el precio o el estatus de la cuenta. 

En esta entrada configuraré un framework para conectar a la API usando la libraria python-binance en un sistema Windows. En una próxima entrada, haré lo mismo para un sistema Mac. 

Preparar el Framework

Para preparar el entorno de trabajo que permita conectarnos a la API de Binance necesitaremos tres cosas: 

  • el cliente de Python
  • el modulo de gestión de paquetes PIP 
  • y la libraria Python-Binance

Para instalar el cliente Python en Windows 10 es tan fácil como buscarlo en la Microsoft Store e instalarlo.



Para obtener PIP, el primer paso es descarcargar el script que lo va a instalar: 

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

Una vez descargado, ejecutamos el script desde Python.

python get-pip.py

Y una vez se complete la instalación, solo queda comprobar que esta correctamente instalado.


El último punto es instalar el 

pip install python-binance

Con estos tres componentes ya tenemos el framework necesario para conectar a la API, el siguiente punto es realizar la conexión y para ello, necesitamos unas claves para autenticarnos. 

Obtener claves de Testnet

Antes de empezar a hacer trading en un entorno real Binance da la opción de testear el codigo en una Testnet: 

https://testnet.binance.vision/



Desde aquí podremos autenticar usando la cuenta de GitHub:




Una vez dentro, veremos disponible la opción de generar unas nuevas claves HMAC_SHA256 para conectar a la API. Tambien es posible registrar unas claves RSA, pero es algo que veremos en otra ocasión. 


Una vez cliquemos en el enlace para generar las claves HMAC SHA256, tan solo tenemos que introducir una descripción que tan solo nos valdrá para identificar las claves en la web:


Nos mostrará las claves y las guardaremos a buen recaudo para poder usarlas en nuestros scripts para autenticar con la API. 

Securizar las claves de la API

Os recomiendo guardar las claves como variables de entorno, de esta manera aunque guardes el código en de tu script en un repositorio Git público o lo compartas con alguien, no corres el riesgo de revelar las claves. Para hacerlo puedes usar estos comandos: 

set binance_api=aqui_tu_clave_api
set binance_secret=aqui_tu_secreto_api

Y puedes probar a importar las variable a Python usando el comando import os de la siguiente manera :


"Hello World!"

Ahora que tenemos el framework preparado y las claves generadas como primera prueba vamos a hacer algunas consultas a la API. 

El primer paso es iniciar un cliente: 

import os # para importar las variables de entorno donde estan las claves
from binance.client import Client # para importar la clase Client

Como en la prueba anterior, cargamos las claves que tenemos en las variables de entorno.

# importar claves
api_key = os.environ.get('binance_api')
api_secret = os.environ.get('binance_secret')

El siguiente paso es crear una objeto de la clase Client usando las claves de la API


client = Client(api_key, api_secret)

Y el último paso es cambiar manualmente la URL para conectar al entorno de Testnet: 
client.API_URL = 'https://testnet.binance.vision/api'
Llegados a este punto podemos empezar a lanzar consultas a la API. 

Lo primero que podemos probar es obtener los balances e información de la cuenta de test: 
# obtener todos los balances e informacion de la cuenta: print(client.get_account())

La siguiente prueba puede ser el balance de una crypto en concreto, para este ejemplo Bitcoin:
print(client.get_asset_balance(asset='BTC'))

Y la última prueba es la de obtener el precio de un token en concreto, por ejemplo Ethereum
# obtener el precio de la API de la Testnet btc_price = client.get_symbol_ticker(symbol="ETHUSDT") # imprimir el resultado print(btc_price)


Y hasta aquí la primera toma de contacto con la API de Binance, el framework para conectarse a la API real es el mismo, la única diferencia es que las claves hay que solicitarlas en la cuenta de Binance que tengamos abierta. Pero eso lo veremos en futuras antreadas. 

Gracias por llegar hasta aquí!


Links

https://algotrading101.com/learn/binance-python-api-guide/

https://phoenixnap.com/kb/install-pip-windows


Instalar Cristal Azul en Raspberry 3

Después de rebuscar por Internet he encontrado varios tutoriales con instrucciones para instalar Kodi con Cristal Azul en una Raspberry Pi 3...