En la era de la información instantánea, donde los mercados de criptomonedas laten como corazones digitales sin descanso, surge una necesidad vital para todo trader de futuros: contar con un asistente incansable, certero y rápido. Ese asistente puede ser un bot. Pero no cualquier bot. Hoy te voy a mostrar cómo construir desde cero un bot de señales de futuros de criptomonedas en Binance, utilizando Python y Telegram, con una arquitectura escalable y apta para evolucionar hacia sistemas más complejos.

Este artículo es un viaje extenso, detallado y técnico. Vas a encontrar aquí código, explicaciones, filosofía de diseño y prácticas que podrían convertirse en los cimientos de tu próximo producto SaaS o startup cripto.

Prepárate. Este no es un simple tutorial. Es una guía de construcción para un bot que podría cambiar tu manera de operar en los mercados.


1. Conceptos Fundamentales

¿Qué es un bot de señales?

Es un programa automatizado que analiza el mercado en tiempo real y, basándose en ciertas condiciones, emite una «señal» indicando una posible entrada (LONG o SHORT) en una posición específica. No ejecuta la orden, solo avisa. Es ideal para traders humanos que quieren mejorar su toma de decisiones sin desconectarse totalmente.

¿Por qué usar Binance Futures?

Binance ofrece:

  • Alta liquidez
  • API potente y bien documentada
  • Acceso a contratos perpetuos con apalancamiento
  • Amplio abanico de pares

¿Por qué Telegram?

Porque es simple, rápido y tiene una API bot-friendly que permite entregar mensajes instantáneos a canales privados, grupos o usuarios directos.


2. Requisitos Previos

Conocimientos

  • Python intermedio (listas, diccionarios, funciones, clases)
  • Manejo de JSON, REST y HTTP
  • Conocimiento básico de indicadores técnicos
  • Familiaridad con Binance y su interfaz

Herramientas

  • Python 3.11+
  • Cuenta en Binance con acceso a la API de Futuros
  • Cuenta de Telegram y un bot creado
  • Editor de código (VSCode recomendado)
  • Postman o cURL para pruebas API (opcional)

3. Arquitectura del Proyecto

Nuestro bot tendrá una estructura de carpetas similar a esta:

bot_senales_binance/
├── config/
│   └── settings.json
├── core/
│   ├── binance_api.py
│   ├── indicators.py
│   ├── signal_engine.py
├── telegram/
│   └── notifier.py
├── main.py
├── requirements.txt
└── .env

Este tipo de diseño modular facilita escalar el proyecto más adelante.


4. Preparar el Entorno

Crear entorno virtual y paquetes necesarios

python -m venv env
source env/bin/activate  # o env\Scripts\activate en Windows
pip install python-binance pandas ta python-telegram-bot python-dotenv

Crea tu archivo requirements.txt:

python-binance
pandas
ta
python-telegram-bot
python-dotenv

5. Configuración Inicial

Archivo .env

BINANCE_API_KEY=TU_API_KEY
BINANCE_API_SECRET=TU_API_SECRET
TELEGRAM_TOKEN=TU_TOKEN_DEL_BOT
TELEGRAM_CHAT_ID=TU_CHAT_ID

Archivo settings.json

{
  "symbols": ["BTCUSDT", "ETHUSDT"],
  "interval": "15m",
  "indicators": {
    "rsi": 14,
    "macd": {
      "fast": 12,
      "slow": 26,
      "signal": 9
    }
  },
  "signal_thresholds": {
    "rsi_overbought": 70,
    "rsi_oversold": 30
  }
}

6. Conexión a Binance

Archivo core/binance_api.py

from binance.client import Client
import os
from dotenv import load_dotenv

load_dotenv()

api_key = os.getenv("BINANCE_API_KEY")
api_secret = os.getenv("BINANCE_API_SECRET")

client = Client(api_key, api_secret)

def get_klines(symbol, interval, limit=100):
    klines = client.futures_klines(symbol=symbol, interval=interval, limit=limit)
    return klines

7. Cálculo de Indicadores

Archivo core/indicators.py

import pandas as pd
import ta

def prepare_df(klines):
    df = pd.DataFrame(klines, columns=[
        "timestamp", "open", "high", "low", "close", "volume",
        "close_time", "quote_asset_volume", "number_of_trades",
        "taker_buy_base_volume", "taker_buy_quote_volume", "ignore"])
    df["close"] = pd.to_numeric(df["close"])
    return df

def add_indicators(df):
    df["rsi"] = ta.momentum.RSIIndicator(df["close"], window=14).rsi()
    macd = ta.trend.MACD(df["close"], window_slow=26, window_fast=12, window_sign=9)
    df["macd"] = macd.macd()
    df["macd_signal"] = macd.macd_signal()
    return df

8. Motor de Señales

Archivo core/signal_engine.py

from core.indicators import prepare_df, add_indicators
from core.binance_api import get_klines

def check_signal(symbol, interval):
    klines = get_klines(symbol, interval)
    df = prepare_df(klines)
    df = add_indicators(df)
    last = df.iloc[-1]
    
    if last["rsi"] < 30 and last["macd"] > last["macd_signal"]:
        return f"📈 LONG signal for {symbol} (RSI: {last['rsi']:.2f})"
    elif last["rsi"] > 70 and last["macd"] < last["macd_signal"]:
        return f"📉 SHORT signal for {symbol} (RSI: {last['rsi']:.2f})"
    else:
        return None

9. Notificador de Telegram

Archivo telegram/notifier.py

from telegram import Bot
import os
from dotenv import load_dotenv

load_dotenv()

bot = Bot(token=os.getenv("TELEGRAM_TOKEN"))
CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")

def send_telegram_message(message):
    bot.send_message(chat_id=CHAT_ID, text=message)

10. Ejecutar Bot

Archivo main.py

import time
import json
from core.signal_engine import check_signal
from telegram.notifier import send_telegram_message

with open("config/settings.json") as f:
    config = json.load(f)

SYMBOLS = config["symbols"]
INTERVAL = config["interval"]

while True:
    for symbol in SYMBOLS:
        signal = check_signal(symbol, INTERVAL)
        if signal:
            send_telegram_message(signal)
    time.sleep(900)  # Espera 15 min antes del siguiente escaneo

11. Validación y Escalabilidad

  • Validación: Puedes guardar los resultados en un CSV, hacer backtesting con backtrader o usar simuladores como freqtrade.
  • Escalabilidad:
    • Agrega nuevos indicadores
    • Usa WebSockets en vez de REST
    • Añade Dashboard en Streamlit
    • Soporte para múltiples intervalos y estrategias

12. Seguridad

  • Usa .env para claves
  • Nunca subas tus claves a GitHub
  • Maneja errores y reconexiones automáticas
  • Considera Dockerizar tu bot

13. Conclusión

Crear un bot de señales no es solo programar. Es entender el mercado, modular la lógica y pensar a futuro. Has aprendido a construir una base sólida, escalable y funcional para alertas de trading con Python, Binance y Telegram.

Este bot puede ser tu herramienta personal, o el inicio de un producto que ofrezcas como servicio. Imagina vender señales, integrarlas a un canal privado o incluso crear una app móvil conectada a esta arquitectura.

Sigue explorando. Mejora el bot. Introduce IA. Agrega capas de aprendizaje automático. El mundo cripto está listo para los valientes que automatizan.


Próximos pasos para otro articulo:

  • Añadir interfaz web con Flask o FastAPI
  • Almacenamiento de datos en MongoDB o SQLite
  • Pruebas unitarias y logging profesional

Y recuerda: el mejor bot no es el que opera solo, sino el que te da superpoderes para decidir mejor.

Fin del viaje. Pero el comienzo de tu imperio. Comenta y comparte con tus amigos, familiares y colegas y hazle llegar esta valiosa información. Hasta la próxima!

2 comentario sobre «Cómo Crear un Bot de Señales de Futuros de Criptomonedas con Binance, Python y Telegram»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *