Desarrollar estrategias basadas en RSI y MACD

Lectura
20 min~4 min lectura
Objetivo de la lección

Concepto clave El RSI (Relative Strength Index) y el MACD (Moving Average Convergence Divergence) son dos de los indicadores técnicos más utilizados en el trading algorítmico.

Puntos de control
  • Concepto clave
  • Cómo funciona en la práctica
  • Código en acción
  • Errores comunes

Concepto clave

El RSI (Relative Strength Index) y el MACD (Moving Average Convergence Divergence) son dos de los indicadores técnicos más utilizados en el trading algorítmico. El RSI mide la velocidad y magnitud de los movimientos de precio recientes para identificar condiciones de sobrecompra o sobreventa, oscilando entre 0 y 100. El MACD, por otro lado, es un indicador de tendencia que muestra la relación entre dos medias móviles exponenciales, generando señales de compra o venta cuando cruza su línea de señal.

Imagina que el RSI es como un termómetro del mercado: cuando supera 70, el activo está "sobrecalentado" (sobrecomprado), y cuando cae por debajo de 30, está "enfriado" (sobrevendido). El MACD funciona como un radar de cambios de tendencia: cuando la línea MACD cruza por encima de la línea de señal, indica que el impulso alcista está ganando fuerza, similar a cómo un coche acelera al cambiar de marcha.

Cómo funciona en la práctica

Una estrategia combinada RSI-MACD típica sigue estos pasos:

  1. Calcular el RSI (periodo 14) y el MACD (12,26,9) para el par BTC/USDT en timeframe de 1 hora
  2. Esperar señal de entrada: RSI < 30 (sobreventa) Y MACD cruce alcista (línea MACD > señal)
  3. Colocar orden de compra con stop-loss en el mínimo reciente menos 2%
  4. Tomar ganancias cuando RSI > 70 (sobrecompra) O MACD cruce bajista
  5. Monitorear posición y ajustar parámetros según volatilidad del mercado

Ejemplo con datos reales: En Binance, el BTC/USDT mostró el 15/03/2024 un RSI de 28.5 y un cruce alcista del MACD. Una entrada a $68,500 con stop en $67,000 habría generado una ganancia del 5% cuando el RSI alcanzó 72 dos días después.

Código en acción

Implementación básica de cálculo de indicadores:

import pandas as pd
import numpy as np
from binance.client import Client
import talib

# Configuración inicial
client = Client(api_key='TU_API_KEY', api_secret='TU_API_SECRET')
symbol = 'BTCUSDT'
interval = Client.KLINE_INTERVAL_1HOUR

# Obtener datos históricos
klines = client.get_klines(symbol=symbol, interval=interval, limit=1000)
df = pd.DataFrame(klines, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume',
                                   'close_time', 'quote_asset_volume', 'number_of_trades',
                                   'taker_buy_base', 'taker_buy_quote', 'ignore'])
df['close'] = df['close'].astype(float)

# Calcular RSI y MACD
df['rsi'] = talib.RSI(df['close'], timeperiod=14)
macd, macd_signal, macd_hist = talib.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
df['macd'] = macd
df['macd_signal'] = macd_signal

Estrategia completa con lógica de trading:

def rsi_macd_strategy(df, rsi_oversold=30, rsi_overbought=70):
    """Implementa estrategia combinada RSI-MACD"""
    signals = []
    position = 0  # 0: sin posición, 1: largo, -1: corto
    
    for i in range(1, len(df)):
        # Condiciones de entrada
        rsi_condition = df['rsi'].iloc[i] < rsi_oversold
        macd_condition = (df['macd'].iloc[i] > df['macd_signal'].iloc[i]) and \
                         (df['macd'].iloc[i-1] <= df['macd_signal'].iloc[i-1])
        
        # Condiciones de salida
        exit_condition = (df['rsi'].iloc[i] > rsi_overbought) or \
                        ((df['macd'].iloc[i] < df['macd_signal'].iloc[i]) and \
                         (df['macd'].iloc[i-1] >= df['macd_signal'].iloc[i-1]))
        
        # Lógica de trading
        if position == 0 and rsi_condition and macd_condition:
            signals.append('BUY')
            position = 1
        elif position == 1 and exit_condition:
            signals.append('SELL')
            position = 0
        else:
            signals.append('HOLD')
    
    return signals

# Ejecutar estrategia
df['signal'] = rsi_macd_strategy(df)
print(f"Señales generadas: {df['signal'].value_counts().to_dict()}")

Errores comunes

  • Optimización excesiva (overfitting): Ajustar parámetros RSI/MACD a datos históricos específicos sin validación cruzada. Solución: Usar walk-forward optimization y out-of-sample testing.
  • Ignorar el contexto del mercado: Aplicar la misma estrategia en mercados laterales y tendenciales. Solución: Incorporar filtro de tendencia (ej: ADX > 25 para mercados tendenciales).
  • Manejo incorrecto de señales contradictorias: Cuando RSI y MACD dan señales opuestas. Solución: Definir reglas de prioridad claras o requerir confirmación de volumen.
  • Falta de gestión de riesgo: No implementar stop-loss dinámicos. Solución: Usar ATR (Average True Range) para stops adaptativos.
  • Latencia en ejecución: Para timeframe cortos (<15min), la demora en obtener datos puede invalidar señales. Solución: Implementar websockets para datos en tiempo real.

Checklist de dominio

  1. Puedo calcular RSI y MACD desde datos de Binance API sin usar bibliotecas predefinidas
  2. Implementé backtesting de estrategia RSI-MACD con cálculo de Sharpe ratio y máximo drawdown
  3. Optimicé parámetros (periodos RSI, configuraciones MACD) usando validación cruzada temporal
  4. Integré gestión de riesgo con stops basados en ATR y tamaño de posición según Kelly Criterion
  5. Probé la estrategia en múltiples pares (BTC, ETH, altcoins) y timeframes (1h, 4h, 1d)
  6. Documenté edge cases: gaps de precio, mantenimiento de exchange, falta de liquidez
  7. Automaticé el monitoreo de señales con alertas y logging de ejecuciones reales

Backtesting de estrategia RSI-MACD con optimización de parámetros

Implementa un sistema completo de backtesting para la estrategia RSI-MACD y optimiza sus parámetros para maximizar el Sharpe ratio.

  1. Configura el entorno: Crea un script Python que descargue datos históricos de BTC/USDT (1h) desde Binance API para los últimos 6 meses
  2. Implementa backtesting básico: Desarrolla una función que simule la estrategia con parámetros iniciales (RSI: 14, MACD: 12,26,9) y calcule métricas: retorno total, Sharpe ratio, máximo drawdown, ratio win/loss
  3. Optimiza parámetros: Usa grid search para probar combinaciones: RSI periodos [10, 14, 20], MACD fast [8, 12, 16], slow [20, 26, 32]. Divide datos en 70% entrenamiento, 30% validación
  4. Analiza resultados: Genera visualización de equity curve, distribución de retornos, y heatmap de parámetros vs Sharpe ratio
  5. Implementa mejora: Añade filtro de tendencia usando ADX (valores > 25) y compara resultados con/ sin filtro
  6. Documenta hallazgos: Prepara reporte con mejores parámetros, estabilidad en out-of-sample, y recomendaciones para live trading
Pistas
  • Usa la biblioteca backtrader o vectorbt para backtesting más eficiente que loops manuales
  • Considera costs de trading (0.1% por operación en Binance) en tus cálculos de retorno
  • Para evitar overfitting, valida con datos de diferentes períodos temporales (ej: bull vs bear market)

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Laboratorio de práctica

Antes de marcar esta lección como completa, escribí una evidencia breve para Desarrollo de Bots de Trading Algorítmico con Python y Binance API: un ejemplo, una decisión, una captura, una mini demo o una nota que puedas reutilizar en portfolio.

Reflexión rápida

¿Qué cambiarías en tu forma de trabajar después de aplicar desarrollar estrategias basadas en rsi y macd?

De lección a portfolio

Convertí esta lección en evidencia para Data Analyst.

Sumá un mini caso con datos, una conclusión de negocio y una captura del resultado. Eso pesa más que decir que viste la herramienta.

Paso 1

Publicá una consulta, dashboard o notebook con una conclusión clara.

Paso 2

Agregá contexto: problema, dato usado, decisión recomendada y limitación.

Paso 3

Guardá el enlace en tu CV, LinkedIn o portfolio antes de postular.

Newsletter Cursalo

Recibí rutas y cursos nuevos

Sumate para recibir recursos orientados a empleo y portfolio.

  • Rutas de empleo
  • Cursos prácticos
  • Portfolio y entrevistas

Sin spam. También podés entrar con tu cuenta para guardar progreso. Iniciá sesión

Desarrollar estrategias basadas en RSI y MACD | CursaloFalar no WhatsApp