Quant500 Academy

6. Trading de criptomonedas con Python: ccxt, el traductor universal de exchanges

Nivel 3: Datos de Mercado y APIs

Cada exchange de criptomonedas — Binance, Coinbase, Kraken — tiene su propia API, con su propio formato de datos y sus propias reglas. Escribir código distinto para cada uno sería absurdo si lo que quieres es una estrategia que funcione igual en cualquiera de ellos. Para eso existe ccxt (CryptoCurrency eXchange Trading), una librería de Python que ofrece una interfaz única para conectarte y operar en más de cien exchanges distintos sin tener que adaptar tu código a cada uno.

Sus ventajas principales son varias. Una API unificada: aprendes una sola forma de pedir datos o enviar órdenes, y funciona igual sea cual sea el exchange, con cambios mínimos de código al cambiar de uno a otro. Cobertura amplia: soporta la inmensa mayoría de exchanges relevantes, desde Binance y Coinbase hasta plataformas mucho más pequeñas. Datos de mercado estandarizados: tickers, libros de órdenes, histórico de operaciones, todo con el mismo formato, sin importar de qué exchange venga. Capacidad de trading real: no solo lee datos, también permite colocar y cancelar órdenes de mercado y de límite, y gestionar las que ya tienes abiertas. Y es de código abierto y se mantiene activamente, lo que en la práctica significa que si un exchange cambia su API, la librería suele actualizarse rápido para seguir funcionando.

Para empezar, solo hace falta instalarla e inicializar la conexión con el exchange que quieras usar:

import ccxt

print(ccxt.exchanges)   # lista de mas de 100 exchanges soportados

exchange = ccxt.binanceus({
    "enableRateLimit": True,  # evita que el exchange te bloquee por exceso de peticiones
})

velas = exchange.fetch_ohlcv("BTC/USD", timeframe="1d", limit=100)

enableRateLimit es un detalle que no debes saltarte nunca en código real: cada exchange limita cuántas peticiones puedes hacer por segundo, y superar ese límite puede acabar en un bloqueo temporal — o permanente — de tu cuenta. ccxt gestiona automáticamente esa espera cuando activas esta opción, en vez de tener que calcularla tú mismo.

El libro de órdenes (order book) también es accesible directamente, y es la forma más directa de ver, en tiempo real, cuánta gente quiere comprar y vender a cada nivel de precio — el mismo concepto que viste conceptualmente en el Nivel 1, pero ahora con datos reales delante:

profundidad = exchange.fetch_order_book("BTC/USDT")

compras = profundidad["bids"]   # ordenes de compra pendientes
ventas = profundidad["asks"]    # ordenes de venta pendientes

Como con cualquier código que toque dinero real, dos advertencias no son opcionales: nunca compartas ni subas a un repositorio público tus claves de API, y prueba siempre cualquier estrategia con una cuenta de prueba o con cantidades mínimas antes de arriesgar capital de verdad.

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.