def detectar_cruces(df): """ Detectar cruces de MA y generar puntos de senal. Retorna lista de puntos de senal en formato API. """ puntos = [] for i in range(1, len(df)): prev = df.iloc[i - 1] curr = df.iloc[i] # Saltar si las MAs no estan calculadas aun if pd.isna(prev["ma_rapida"]) or pd.isna(curr["ma_lenta"]): continue # Cruce alcista: MA rapida cruza por encima de MA lenta diff_prev = prev["ma_rapida"] - prev["ma_lenta"] diff_curr = curr["ma_rapida"] - curr["ma_lenta"] if diff_prev <= 0 and diff_curr > 0: # Senal de COMPRA puntos.append({ "time": int(curr["time"]), "type": "low", "price": float(curr["low"]) - 0.0005, "label": "COMPRA", "color": "#3b82f6", "shape": "arrowUp", "size": 2 }) elif diff_prev >= 0 and diff_curr < 0: # Senal de VENTA puntos.append({ "time": int(curr["time"]), "type": "high", "price": float(curr["high"]) + 0.0005, "label": "VENTA", "color": "#f97316", "shape": "arrowDown", "size": 2 }) return puntos
==================================================Indicador Cruce de Medias Moviles==================================================1. Obteniendo datos de mercado... Obtenidas 500 barras2. Calculando medias moviles...3. Detectando cruces... Encontradas 8 senales Senales recientes: - COMPRA a 1.10250 - VENTA a 1.10450 - COMPRA a 1.103004. Enviando a InnovaTrading... Exito! 8 puntos enviados Expira: 2025-12-13T14:00:00Z==================================================Listo! Revisa tu chart para ver las senales.==================================================