Quant500 Academy

7. La API de Binance y la seguridad de tus claves

Nivel 3: Datos de Mercado y APIs

Además de ccxt, Binance ofrece su propia librería oficial de Python, python-binance, con acceso más directo a funciones específicas de ese exchange en concreto — útil cuando ccxt no cubre algo particular de Binance que necesitas.

Para usarla, hacen falta cuatro pasos. Primero, crear una cuenta en Binance. Segundo, generar una clave de API desde el panel de gestión de API de tu cuenta — esa clave (y su secreto asociado) es, en la práctica, una contraseña que le da a tu código permiso para operar en tu nombre. Tercero, instalar la librería:

pip install python-binance

Y cuarto — el paso que más se salta la gente, y el que más caro sale cuando algo falla — proteger esas claves correctamente. La forma correcta NO es escribirlas directamente dentro del código, ni subirlas a un repositorio de GitHub, ni compartirlas por ningún canal que no sea estrictamente privado. Si una clave de API con permisos de trading se filtra, cualquiera que la encuentre puede operar con tu cuenta real.

La práctica estándar es guardarlas como variables de entorno del sistema operativo, fuera del propio código fuente:

# en la terminal, antes de ejecutar tu script (Windows):
# set BINANCE_API_KEY=tu_clave_aqui
# set BINANCE_API_SECRET=tu_secreto_aqui

# en macOS o Linux:
# export BINANCE_API_KEY="tu_clave_aqui"
# export BINANCE_API_SECRET="tu_secreto_aqui"

import os
from binance.client import Client

api_key = os.environ.get("BINANCE_API_KEY")
api_secret = os.environ.get("BINANCE_API_SECRET")

cliente = Client(api_key, api_secret, tld="us")

Con esto, el código lee las claves del entorno en el momento de ejecutarse, pero el código en sí — el archivo que podrías compartir, subir a un repositorio o enseñar en un curso — nunca contiene ninguna clave real. Es exactamente la misma lógica que no deberías romper nunca en ningún proyecto real: el código se comparte, los secretos no.

Con el cliente ya conectado, consultar información de mercado es directo:

profundidad = cliente.get_order_book(symbol="BNBBTC")   # libro de ordenes
precios = cliente.get_all_tickers()                       # precio actual de todos los pares
velas = cliente.get_historical_klines("BNBBTC", Client.KLINE_INTERVAL_1MINUTE, "1 day ago UTC")

Estas tres llamadas son de solo lectura: no arriesgan capital, así que son un buen punto de partida para familiarizarte con la API antes de tocar cualquier función que coloque órdenes reales.

Para ampliar esta lección

El resto de Quant500

Lo que estás aprendiendo, aplicado al índice todos los días:

La cartera del modelo, cada semana en tu correo

Cada sábado, su semana en un minuto: cómo fue, lo mejor y lo peor, y qué directivos compraron con su dinero. Y el día que el modelo se rehace, qué entra y qué sale. Es una simulación, no un consejo. Como mucho un correo a la semana, sin publicidad y sin cuenta; te das de baja con un clic. Lo hace una persona: Pol Gracia.

Cartera modelo con resultados simulados, no una recomendación personalizada. Tu correo se usa solo para esto: privacidad.

Detrás de la Academia y del resto de Quant500 hay una sola persona: Pol Gracia Serrahima.