Saltar al contenido

Lección 19 de 20 · Lectura y práctica

Práctica: Desarrollar bot completo con ejecución en sandbox

Concepto claveEn esta lección, integraremos todos los componentes de un bot de trading algorítmico completo para ejecutarlo en un entorno de sandbox de Binance. Un sandbox es un entorno de prueba que replica la API real pero con.

Del concepto a la práctica

Taller de esta lección

La práctica integradora debe tener un modo seguro por defecto. El ciclo lee datos, valida la vela, calcula señal, consulta el gestor de riesgo y solo entonces registra una ejecución simulada o autorizada en sandbox. Un fallo de datos o una credencial ausente impide una acción nueva. Si una solicitud externa ya enviada sufre timeout, su estado puede ser desconocido: consulta y reconcilia antes de reenviarla, para evitar duplicados. Este laboratorio permanece en ejecución local paper.

Ejemplo resuelto

Con señal buy, saldo 1.000, entrada 100, stop 95 y límite de riesgo 1%, el gestor devuelve 1,924 unidades con el supuesto ficticio de comisión 0,1% en ambos lados, paso de cantidad 0,001 y exposición permitida de al menos 192,40 USDT. La pérdida estimada al stop es 9,99518 USDT antes de gaps o slippage. El simulador registra la orden con estado paper, comisión definida y una identificación local. No se llama a una operación real.

Pruébalo

  1. Ejecuta el ciclo con datos locales y modo paper explícito.

  2. Fuerza una vela inválida y comprueba el rechazo.

  3. Fuerza riesgo superior al máximo y comprueba que no haya ejecución.

  4. Revisa que cada decisión tenga timestamp y razón.

Comprueba tu resultado

Error frecuente: usar el modo real como valor predeterminado o continuar tras un error. Corrección: exige una bandera explícita de sandbox y falla de forma segura.

Ejercicio: elimina el stop de la señal. Resultado esperado: el gestor rechaza la operación, el saldo queda igual y el registro indica stop ausente.

Prueba cronológica de una estrategia con datos históricos, costes y riesgo antes de validarla en otro periodo.
CursaloMapa de práctica
Probar una estrategia sin dinero real

Una simulación utiliza datos históricos y debe incluir comisiones y deslizamiento. Separar el periodo de desarrollo del de validación reduce el ajuste al pasado. Examina pérdidas y caídas además del resultado; una prueba histórica no garantiza ganancias futuras.

Ver la infografía en tamaño completo ↗

Concepto clave

En esta lección, integraremos todos los componentes de un bot de trading algorítmico completo para ejecutarlo en un entorno de sandbox de Binance. Un sandbox es un entorno de prueba que replica la API real pero con datos ficticios, permitiéndote validar tu estrategia sin riesgo financiero. Imagina esto como un simulador de vuelo para pilotos: puedes practicar maniobras complejas sin poner en peligro un avión real. Aquí, el sandbox te permite probar tu lógica de trading, manejo de errores y ejecución de órdenes en condiciones realistas pero seguras.

La arquitectura de un bot completo implica la orquestación de varios módulos: conexión a la API, gestión de credenciales, lógica de estrategia, ejecución de órdenes, y monitoreo. En nivel avanzado, no solo buscamos funcionalidad, sino eficiencia y robustez. Un error común es desarrollar cada parte por separado y luego enfrentar problemas de integración; por eso, enfatizamos un enfoque modular pero cohesivo desde el inicio.

Cómo funciona en la práctica

Vamos a construir un bot que implemente una estrategia de media móvil cruzada (SMA) en el par BTC/USDT, ejecutándose en el sandbox de Binance. Paso a paso: primero, configuramos el entorno con las credenciales de sandbox (disponibles en el portal de desarrolladores de Binance). Luego, establecemos la conexión usando la biblioteca python-binance, verificando que responda correctamente. Después, implementamos la lógica de la estrategia: calculamos dos medias móviles (por ejemplo, SMA-20 y SMA-50) en tiempo real usando datos de mercado del sandbox.

Cuando la SMA corta cruza por encima de la larga, generamos una señal de compra; si cruza por debajo, una señal de venta. El bot debe manejar estas señales automáticamente: al detectar una compra, envía una orden limitada al sandbox; para una venta, cierra la posición. Además, incorporamos un sistema de monitoreo que registra cada acción en un archivo de log y verifica el balance disponible antes de cada operación. Esto simula un entorno de producción, donde la trazabilidad y el control de riesgos son críticos.

Código en acción

Aquí tienes un ejemplo funcional de la configuración inicial y la conexión al sandbox. Nota el uso de variables de entorno para las credenciales, una práctica esencial para seguridad.

import os
from binance.client import Client
from binance.enums import *
import pandas as pd
import logging

# Configuración del sandbox
API_KEY = os.getenv('BINANCE_SANDBOX_API_KEY')
API_SECRET = os.getenv('BINANCE_SANDBOX_API_SECRET')

# Crear cliente para sandbox (testnet)
client = Client(API_KEY, API_SECRET, testnet=True)

# Verificar conexión
try:
    status = client.get_system_status()
    if status['status'] == 0:
        print("Conexión al sandbox exitosa")
    else:
        print("Problema en la conexión")
except Exception as e:
    print(f"Error: {e}")

Ahora, veamos la implementación de la estrategia de medias móviles. Este código calcula las SMA y genera señales.

def calcular_sma(datos, periodo):
    """Calcula la media móvil simple para un período dado."""
    return datos.rolling(window=periodo).mean()

def generar_senal(precios, sma_corta=20, sma_larga=50):
    """Genera señales de compra/venta basadas en cruce de SMA."""
    sma_20 = calcular_sma(precios, sma_corta)
    sma_50 = calcular_sma(precios, sma_larga)
    
    # Señal: 1 para compra, -1 para venta, 0 para mantener
    if sma_20.iloc[-1] > sma_50.iloc[-1] and sma_20.iloc[-2] <= sma_50.iloc[-2]:
        return 1  # Cruce alcista
    elif sma_20.iloc[-1] < sma_50.iloc[-1] and sma_20.iloc[-2] >= sma_50.iloc[-2]:
        return -1  # Cruce bajista
    else:
        return 0

# Ejemplo de uso con datos ficticios del sandbox
datos_ejemplo = pd.Series([50000, 51000, 49000, 52000, 53000, 54000, 55000, 56000])
senal = generar_senal(datos_ejemplo)
print(f"Señal generada: {senal}")  # Output depende de los datos

Errores comunes

  • No validar credenciales de sandbox: Usar credenciales de producción en el sandbox o viceversa causa errores de autenticación. Siempre verifica que testnet=True esté configurado y las claves sean las correctas.
  • Ignorar límites de tasa (rate limits): La API de Binance tiene límites; excederlos resulta en baneos temporales. Implementa pausas (time.sleep) o usa manejo de excepciones para reintentos.
  • Manejo inadecuado de errores en órdenes: No verificar respuestas de la API al enviar órdenes puede llevar a pérdidas no intencionadas. Siempre revisa el estado de la orden (order['status']) y maneja casos como fondos insuficientes.
  • Falta de logging robusto: Sin registros detallados, es difícil depurar fallos en producción. Usa el módulo logging de Python para trackear cada paso del bot.
  • Optimización prematura: Enfocarse en velocidad antes de tener una estrategia validada lleva a código complejo e innecesario. Primero asegura funcionalidad en sandbox, luego optimiza.

Checklist de dominio

  1. Configurar exitosamente el entorno de sandbox de Binance y verificar la conexión con la API.
  2. Implementar una estrategia de trading (como SMA cruzada) que genere señales automáticas basadas en datos de mercado.
  3. Ejecutar órdenes de compra/venta en el sandbox, manejando respuestas y errores de la API.
  4. Integrar un sistema de logging que registre todas las acciones del bot para trazabilidad.
  5. Validar que el bot opere dentro de los límites de tasa y maneje excepciones como desconexiones.
  6. Probar el bot con datos históricos en sandbox para verificar su comportamiento antes de producción.
  7. Documentar el flujo completo del bot, incluyendo dependencias y configuración.

Desarrolla un bot de trading completo con estrategia SMA y ejecución en sandbox

Sigue estos pasos para construir e implementar tu bot:

  1. Configura el entorno: Crea una cuenta en el sandbox de Binance (testnet.binance.vision) y obtén tus API_KEY y API_SECRET. Configura un proyecto Python con las bibliotecas necesarias: python-binance, pandas, y logging.
  2. Implementa la conexión: Escribe un script que se conecte al sandbox usando las credenciales. Incluye verificación de estado y manejo de errores básico (por ejemplo, si la conexión falla).
  3. Desarrolla la estrategia: Crea una función que calcule medias móviles simples (SMA-20 y SMA-50) usando datos de precios obtenidos del sandbox (puedes usar client.get_historical_klines para datos de prueba). Genera señales de compra/venta basadas en cruces.
  4. Ejecuta órdenes: Extiende el bot para que, al detectar una señal, envíe una orden limitada al sandbox (por ejemplo, comprar 0.001 BTC si hay señal de compra). Verifica el balance antes y registra la orden.
  5. Agrega monitoreo: Implementa logging que registre cada acción (conexión, señales, órdenes) en un archivo. Ejecuta el bot por un período corto (ej., 30 minutos) y revisa los logs para validar su funcionamiento.
Pistas
  • Usa el parámetro testnet=True al crear el cliente de Binance para asegurar que usas el sandbox.
  • Para datos de prueba, obtén klines históricos con intervalos como '1m' o '5m' y conviértelos a un DataFrame de pandas para cálculos.
  • Antes de enviar una orden, verifica el balance disponible con client.get_asset_balance(asset='USDT') para evitar errores de fondos.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con Desarrollo de Bots de Trading Algorítmico con Python y Binance API

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.