Si te dedicas al trading cuantitativo o al monitoreo de mercado, WebSocket es la mejor forma de obtener datos en tiempo real de Binance. En comparación con el polling mediante REST API, WebSocket ofrece menor latencia y mayor eficiencia.
Para usar la API de Binance necesitas tener una cuenta. Puedes Registrarse en Binance para crear la tuya. También es muy conveniente gestionar todo desde el móvil: puedes Descargar la APP de Binance.
Dirección base de WebSocket
La dirección base del WebSocket de Binance para el mercado spot es wss://stream.binance.com:9443/ws/, mientras que la del mercado de futuros es ligeramente diferente. Al conectarte, solo tienes que añadir el nombre del flujo de datos que deseas suscribirte al final de la dirección.
También puedes usar la dirección de flujos combinados para suscribirte a varios flujos de datos simultáneamente: wss://stream.binance.com:9443/stream?streams=nombre_flujo1/nombre_flujo2.
Tipos de flujos de datos más utilizados
Operaciones individuales (Trade): transmite en tiempo real cada operación ejecutada, incluyendo precio, cantidad y hora. Formato del nombre del flujo: btcusdt@trade.
Datos de velas (Kline): transmite en tiempo real las actualizaciones de velas japonesas. Formato del nombre del flujo: btcusdt@kline_1m (vela de 1 minuto). Soporta múltiples intervalos de tiempo.
Profundidad del libro de órdenes (Depth): transmite en tiempo real los cambios en el libro de órdenes de compra y venta. Formato del nombre del flujo: btcusdt@depth o btcusdt@depth@100ms (frecuencia de actualización de 100 milisegundos).
Ticker de 24 horas (Ticker): transmite las variaciones de precio y el volumen de operaciones en las últimas 24 horas. Formato del nombre del flujo: btcusdt@ticker.
Pasos para la conexión
Paso 1: Elige una biblioteca cliente de WebSocket. En Python puedes usar websocket-client o websockets; en JavaScript puedes usar ws.
Paso 2: Establece la conexión. Conéctate a la dirección WebSocket de Binance incluyendo el nombre del flujo al que deseas suscribirte.
Paso 3: Procesa los mensajes. Una vez establecida la conexión, Binance enviará datos de forma continua en formato JSON. Tu programa solo necesita parsear y procesar esos datos.
Paso 4: Mantén la conexión activa. La conexión WebSocket se desconecta cada 24 horas, por lo que tu programa debe ser capaz de reconectarse automáticamente. Se recomienda enviar un frame pong cada pocos minutos para mantener la conexión activa.
Consideraciones importantes
Cada conexión individual puede suscribirse a un máximo de 200 flujos. Si necesitas más, puedes establecer múltiples conexiones.
La conexión WebSocket no requiere API Key para los flujos de datos públicos, pero los flujos de datos de usuario (como actualizaciones de órdenes o cambios en la cuenta) requieren obtener primero un listenKey a través de la REST API.
En caso de inestabilidad en la red, la conexión puede interrumpirse. Es fundamental implementar una lógica de reconexión automática en tu código.
Flujo de datos de usuario
Si necesitas obtener en tiempo real el estado de tus órdenes y los cambios en el saldo de tu cuenta, debes suscribirte al flujo de datos de usuario. Primero, llama al endpoint POST /api/v3/userDataStream de la REST API para obtener un listenKey, y luego usa esa clave para conectarte al WebSocket. El listenKey debe renovarse cada 60 minutos.