Suite de Indicadores Confluentes:
Indicador Cripto PRO & Smart Money
Diseñé estos indicadores para resolver el gran obstáculo de TradingView: el límite estricto de 2 indicadores en cuentas gratuitas. Agrupamos matemáticamente hasta 13 herramientas profesionales (SMC, Supertrend ATR, Ribbon de Medias, Squeeze Momentum y Flujo de Ballenas) en solo 3 scripts abiertos, sin repintado y sin pagar suscripciones mensuales de $30 a $60.
¿Por qué creé estos indicadores?
El origen de la estrategia y la verdad sobre los indicadores de pago
Cualquier trader serio sabe que operar con un solo indicador es apostar a ciegas: necesitás estructura de tendencia, confirmación de volumen y un oscilador de momentum. Pero en TradingView gratuito solo te dejan poner 2 indicadores. Con este código agrupamos todo para que no tengas que pagar planes mensuales costosos.
En redes sociales y canales de Telegram abundan vendedores que ofrecen "scripts privados milagrosos" por suscripciones de $30 a $100 al mes. En el 90% de los casos, son simples fórmulas de Supertrend y Squeeze ocultas detrás de una caja negra que a veces hasta repintan. Mi objetivo con CalculaHoy es darte el código fuente abierto y transparente.
Muchos indicadores te dicen "Comprá" o "Vendé" pero no te dicen dónde colocar el Stop Loss ni cuándo tomar ganancias. Nuestros bloques calculan el ATR de volatilidad real y te dibujan las líneas matemáticas de Stop Loss y Take Profit proyectadas (R:R 1:2) de forma automática.
¿Cuántos indicadores agrupa cada bloque?
Radiografía matemática de los 13 sub-indicadores que operan bajo el capó sin repintado
OmniTrend Smart Money
Acción de precio pura institucional, estructura de mercado y rebotes quirúrgicos con descuento.
-
1. SMC Fractales (Bill Williams / ICT): Algoritmo de 5 velas que detecta máximos y mínimos de oscilación (Swing High/Low) en tiempo real.
-
2. BOS Engine (Break of Structure): Confirma rupturas estructurales cuando una vela rompe el fractal previo con intención.
-
3. Ribbon Triple EMA Institucional: EMA 20 (reacción rápida), EMA 50 (soporte intermedio) y EMA 200 blanca (frontera macro alcista/bajista).
-
4. Dynamic ATR Risk Manager: Cálculo de volatilidad real de 14 periodos con proyección automática de Stop Loss en el swing y Take Profit 1:2 R:R.
OmniMomentum Matrix
Multi-oscilador cuantitativo con detección de volumen de ballenas y disparos de compresión.
-
1. Squeeze Momentum (John Carter): Bandas de Bollinger (20, 2.0) dentro de Canales Keltner (20, 1.5). Puntos negros = compresión; naranja = disparo.
-
2. Chaikin Money Flow Armónico: La Onda Celeste continua que mide acumulación y salida de capital real de inversores institucionales.
-
3. Signal Trigger Line (EMA 4 en amarillo): Línea rápida de gatillo que anticipa entradas antes del cruce lento de la línea cero.
-
4. Scanner Automático de Divergencias RSI: Algoritmo de 14 periodos que marca puntos y etiquetas automáticas BULL / BEAR sin repintar.
Indicador Cripto PRO
Especializado en Bitcoin y criptoactivos con canal dinámico Supertrend y HUD de pantalla.
-
1. Canal Supertrend ATR Dinámico: Banda continua verde/roja que sirve como trailing stop visual y filtro tendencial.
-
2. Ribbon Cuádruple EMA (9, 21, 50, 200): Evalúa la alineación de corto, mediano y largo plazo en una sola mirada.
-
3. Filtro Anti-Rango ADX (14): Bloquea compras falsas en fines de semana cuando el mercado cripto está plano (ADX < 20).
-
4. HUD Dashboard en Pantalla: Cuadro flotante en la esquina superior derecha con métricas en tiempo real.
-
5. Alertas Nativas para Celular / Webhooks: Señales confirmadas estrictamente a vela cerrada para evitar sustos de repintado.
Explicación a Fondo: ¿Qué hace cada indicador técnicamente?
Lógica cuantitativa, física de mercado y funcionamiento interno de cada herramienta
Bloque 1: OmniTrend Smart Money Concepts (Overlay)
¿Qué problema técnico resuelve? La mayoría de los traders pierden dinero comprando cuando el precio rompe hacia arriba con una vela verde gigante (FOMO). En ese momento, las instituciones ya están tomando ganancias y el precio retrocede, sacándote en pérdida.
¿Cómo funciona? Bloque 1 combina la Estructura de Mercado Institucional (SMC) con un Motor de Pullback y proyección automática de gestión de riesgo:
▼ BOS Rojo (Arriba): Rotura bajista de estructura. Perfora el fractal bajo previo, alertando de capitulación de soportes o inicio de distribución.
• EMA 200 Blanca (Regla Sagrada): Filtro macro inviolable. PROHIBIDO vender si cotiza sobre ella; PROHIBIDO comprar si cotiza debajo. Elimina el 80% de falsas rupturas.
• Línea Roja Punteada (SL Dinámico): Stop Loss por volatilidad ATR bajo el fractal técnico de invalidación.
BUY ▲ o BOS ▲, y en el oscilador coincide con un Punto Verde o Triángulo Amarillo (DIV BULL) saliendo del Squeeze (puntos naranja).
Bloque 2: OmniMomentum Matrix PRO (Oscilador)
¿Qué problema técnico resuelve? Un gráfico de velas puede parecer alcista mientras el dinero institucional en realidad está abandonando el activo (trampa de liquidez). Además, los osciladores tradicionales como el RSI o el MACD dan infinidad de falsas alarmas en mercados laterales.
¿Cómo funciona? Bloque 2 utiliza el principio físico de la compresión y descompresión de volatilidad (John Carter) combinado con el flujo de capital real:
• Punto Rojo: Gatillo de salida bajista. La onda celeste cruza hacia abajo a su línea amarilla en zona sobrecomprada (> 0), señalando distribución y agotamiento.
▼ Triángulo Violeta/Fucsia (Arriba): Divergencia Bajista en RSI (> 65). El precio hace un nuevo máximo pero el dinero institucional no acompaña. Alerta de trampa alcista o Take Profit.
Bloque 3: Indicador Cripto PRO (Canal Dinámico & HUD)
¿Qué problema técnico resuelve? En criptomonedas, los movimientos alcistas pueden durar semanas con subidas del 50% al 200%. El error típico es vender a los 3 días por miedo a perder lo ganado. Por el contrario, en fines de semana el mercado queda plano y los traders se desgastan perdiendo en señales falsas sin volumen.
¿Cómo funciona? Bloque 3 está calibrado para la alta volatilidad cripto mediante un sistema adaptativo con telemetría en pantalla:
• Banda Roja Gruesa (Techo Dinámico): Resistencia móvil cuando el activo entra en ciclo bajista.
• EMA 50 & EMA 200: Respaldan la solidez estructural secular y confirman que el rally tiene respaldo macro.
SL y TP1.
• Fuerza ADX: Verde si > 20 (Tendencia con volumen); Naranja si < 20 (Rango lateral / no operar).
• Último SL & Objetivo TP1: Valores calculados en vivo para colocar órdenes bracket en el exchange.
Manual Didáctico: Reglas del Algoritmo y Protocolo de Simulación
Estructura cuantitativa y validación teórica de condiciones antes de considerar cualquier hipótesis técnica
BOS (Break of Structure).
BUY ▲.
BOS bajista.
SELL ▼.
- Invalidez de eventos aislados: Si se produce un evento de cruce en el gráfico pero el oscilador cuantitativo no presenta confluencia de volumen, la hipótesis técnica carece de respaldo estadístico.
- Régimen lateral o de baja volatilidad: Cuando el Squeeze indica compresión (puntos negros) y el índice ADX es inferior a 20, los modelos de seguimiento de tendencia exhiben una alta probabilidad de ruidos o falsas rupturas.
- Eventos macroeconómicos y volatilidad asimétrica: Previo a publicaciones de alta sensibilidad macroeconómica (datos de inflación, tasas de interés de bancos centrales o informes de empleo), la liquidez del libro de órdenes suele reducirse sensiblemente, incrementando el deslizamiento (slippage).
¿Con qué activos se recomienda usar cada estrategia?
Guía detallada por clase de activo, liquidez institucional y temporalidades óptimas
Criptomonedas (BTC / ETH / SOL)
Bitcoin, Ethereum, Solana y Altcoins con volumen diario > $50M en Binance/Bybit.
Por qué funciona: Las criptomonedas desarrollan rallies sostenidos. La banda Supertrend ATR evita que te bajen en sacudidas de volatilidad intermedia.
Índices (S&P 500 / Nasdaq)
SPY, QQQ, Dow Jones, DAX alemán y futuros bursátiles (ES, NQ).
Por qué funciona: Los fondos cuantitativos de Wall Street programan sus algoritmos respetando fractales BOS y la EMA 200 con precisión milimétrica.
Acciones & CEDEARs
Apple (AAPL), Nvidia (NVDA), Tesla (TSLA), Mercado Libre (MELI), Vista Energy (VIST).
Por qué funciona: Permite comprar en rebotes a la EMA 50 cuando la Onda Celeste muestra acumulación previa de inversores institucionales.
Oro & Forex (Divisas)
Oro (XAU/USD), Plata (XAG/USD), EUR/USD, GBP/USD y USD/JPY.
Por qué funciona: En Forex y Oro, las divergencias de RSI y la compresión del Squeeze atrapan giros violentos de liquidez en las aperturas de Londres y Nueva York.
| Mercado / Activo | Combinación Óptima | Timeframe Sugerido | Estilo de Trading |
|---|---|---|---|
| Bitcoin & Cripto (Rally alcista) | Bloque 3 (Indicador Cripto) | 15m / 1h / 4h | Trend Following (Surfear la tendencia sin salir antes) |
| Bitcoin & Cripto (Trading de Precisión) | Bloque 1 (SMC) + Bloque 2 PRO | 15m / 1h | Pullback y Rebote con Descuento en EMA 20 |
| S&P 500 / Nasdaq / Índices | Bloque 1 (SMC) + Bloque 2 PRO | 5m / 15m | Daytrading e Intradía en sesión de Nueva York |
| Acciones de USA & CEDEARs | Bloque 1 (SMC) + Bloque 2 PRO | 1h / 4h / 1D | Swing Trading posicional a días/semanas |
| Oro (XAU/USD) & Materias Primas | Bloque 1 (SMC) + Bloque 2 PRO | 15m / 1h | Divergencias en aperturas de Londres / NY |
Galería de Códigos Pine Script v6
Seleccioná el bloque que deseás y copialo con un solo clic
// ==============================================================================
// © @patagoniactiva · CalculaHoy
// Indicator: OmniTrend Smart Money & Trend Sniper [Overlay]
// License: Mozilla Public License 2.0 (MPL-2.0)
// Educational & Quantitative Research Tool
// ==============================================================================
//@version=6
indicator("Bloque 1: OmniTrend Smart Money & Trend [Sniper Institucional Overlay]", overlay=true, max_labels_count=500, max_lines_count=500)
// Firma digital interna de integridad de origen
var string _ORIGIN_AUTH = "AUTH_PATAGONIACTIVA_OMNITREND_PINE6_2026"
// ==============================================================================
// 1. CONFIGURACIÓN DE FILTROS INSTITUCIONALES Y TENDENCIA MACRO
// ==============================================================================
grp_trend = "1. Filtro Institucional de Tendencia Macro"
macroFilter = input.bool(true, "Filtro Maestro EMA 200 (Alta Certeza)", group=grp_trend, tooltip="PROHIBIDO vender si el precio está sobre la EMA 200. PROHIBIDO comprar si está debajo. Elimina el 80% de señales falsas.")
showCloud = input.bool(true, "Mostrar Nube EMA 20/50/200", group=grp_trend)
lenFast = input.int(20, "EMA Rápida 20 (Soporte Dinámico)", group=grp_trend)
lenSlow = input.int(50, "EMA Media 50", group=grp_trend)
lenBase = input.int(200, "EMA 200 Tendencia Macro", group=grp_trend)
grp_sig = "2. Modo de Señales & Precisión"
tradeMode = input.string("Sniper Institucional (1 Trade por Ciclo)", "Modo de Operación", options=["Sniper Institucional (1 Trade por Ciclo)", "Tendencial con Re-entradas"], group=grp_sig, tooltip="Sniper = Da una sola entrada perfecta al inicio de la tendencia y no vuelve a molestar. Re-entradas = Permite comprar en cada pullback.")
labelStyle = input.string("Compacto Profesional (▲ BUY / ▼ SELL)", "Estilo de Carteles", options=["Compacto Profesional (▲ BUY / ▼ SELL)", "Detallado con SL y TP", "Solo Flechas Limpias"], group=grp_sig)
labelTransp = input.int(60, "Transparencia / Difuminado (0-90%)", minval=0, maxval=90, group=grp_sig)
cooldownBars= input.int(15, "Separación Mínima entre Señales (Velas)", minval=5, group=grp_sig)
riskReward = input.float(2.0, "Ratio Riesgo / Beneficio (R:R)", minval=1.0, maxval=4.0, group=grp_sig)
showLines = input.bool(true, "Dibujar Líneas Discretas de TP y SL", group=grp_sig)
grp_smc = "3. Estructura Smart Money (SMC)"
pivotLen = input.int(5, "Período Detección de Pivotes (Swing High/Low)", minval=2, group=grp_smc)
showBos = input.bool(true, "Mostrar Rupturas de Estructura (BOS)", group=grp_smc)
useMomFilter= input.bool(true, "Filtro de Momentum (RSI 48-78)", group=grp_smc, tooltip="Evita comprar cuando el mercado ya está sobreextendido o sin fuerza.")
// ==============================================================================
// 2. NUBE DE TENDENCIA INSTITUCIONAL (EMAs 20 / 50 / 200)
// ==============================================================================
emaFast = ta.ema(close, lenFast)
emaSlow = ta.ema(close, lenSlow)
emaBase = ta.ema(close, lenBase)
pFast = plot(showCloud ? emaFast : na, "EMA 20", color=color.new(#00e676, 25), linewidth=1)
pSlow = plot(showCloud ? emaSlow : na, "EMA 50", color=color.new(#29b6f6, 25), linewidth=1)
fill(pFast, pSlow, color=emaFast >= emaSlow ? color.new(color.teal, 88) : color.new(color.maroon, 88), title="Nube Dinámica")
plot(showCloud ? emaBase : na, "EMA 200", color=color.new(#ffffff, 20), linewidth=2)
// ==============================================================================
// 3. DETECCIÓN DE PIVOTES Y ESTRUCTURA DE MERCADO (BOS)
// ==============================================================================
pH = ta.pivothigh(high, pivotLen, pivotLen)
pL = ta.pivotlow(low, pivotLen, pivotLen)
var float lastHigh = na
var float lastLow = na
if not na(pH)
lastHigh := pH
if not na(pL)
lastLow := pL
bullBos = not na(lastHigh) and ta.crossover(close, lastHigh)
bearBos = not na(lastLow) and ta.crossunder(close, lastLow)
if showBos and bullBos
line.new(bar_index - pivotLen, lastHigh, bar_index, lastHigh, color=color.new(#00e676, 50), width=1, style=line.style_dashed)
label.new(bar_index, lastHigh, "BOS ▲", color=color.new(#00e676, 75), textcolor=color.new(color.white, 20), style=label.style_label_down, size=size.tiny)
lastHigh := na
if showBos and bearBos
line.new(bar_index - pivotLen, lastLow, bar_index, lastLow, color=color.new(#ff1744, 50), width=1, style=line.style_dashed)
label.new(bar_index, lastLow, "BOS ▼", color=color.new(#ff1744, 75), textcolor=color.new(color.white, 20), style=label.style_label_up, size=size.tiny)
lastLow := na
// ==============================================================================
// 4. MOTOR SNIPER DE ALTA CERTEZA (FILTROS DE ALTA CONVICCIÓN)
// ==============================================================================
atr14 = ta.atr(14)
rsi14 = ta.rsi(close, 14)
// A) FILTRO MACRO OBLIGATORIO:
// Regla institucional sagrada: Jamás vender arriba de la EMA 200; jamás comprar abajo.
isMacroBull = not macroFilter or (close > emaBase and emaFast > emaBase)
isMacroBear = not macroFilter or (close < emaBase and emaFast < emaBase)
// B) FILTRO DE MOMENTUM:
// Evita entrar en techos sobrecomprados o suelos agotados
isMomBull = not useMomFilter or (rsi14 >= 48 and rsi14 <= 78)
isMomBear = not useMomFilter or (rsi14 <= 52 and rsi14 >= 22)
// C) CONDICIÓN TÉCNICA DE ENTRADA:
isBullRegime = emaFast > emaSlow and close > emaSlow
isBearRegime = emaFast < emaSlow and close < emaSlow
// Rebote confirmado en EMA 20 o ruptura estructural
buyPullback = isBullRegime and low <= emaFast and close > emaFast and close > open
buyTrigger = isMacroBull and isMomBull and (bullBos or buyPullback)
sellPullback = isBearRegime and high >= emaFast and close < emaFast and close < open
sellTrigger = isMacroBear and isMomBear and (bearBos or sellPullback)
// D) GESTIÓN DE CICLO (MODO SNIPER 1-TRADE-POR-CICLO):
var int lastSigBar = -100
var string currentSide = "NONE"
canFire = (bar_index - lastSigBar) >= cooldownBars
isSniper = (tradeMode == "Sniper Institucional (1 Trade por Ciclo)")
validBuySide = isSniper ? (currentSide != "LONG") : true
validSellSide = isSniper ? (currentSide != "SHORT") : true
execBuy = buyTrigger and canFire and validBuySide and barstate.isconfirmed
execSell = sellTrigger and canFire and validSellSide and barstate.isconfirmed
var float slPrice = na
var float tpPrice = na
if execBuy
lastSigBar := bar_index
currentSide := "LONG"
slPrice := low - (atr14 * 1.5)
tpPrice := close + ((close - slPrice) * riskReward)
if execSell
lastSigBar := bar_index
currentSide := "SHORT"
slPrice := high + (atr14 * 1.5)
tpPrice := close - ((slPrice - close) * riskReward)
// Reset del ciclo si el precio cruza en sentido contrario para preparar la siguiente entrada
if currentSide == "LONG" and close < emaSlow
currentSide := "NONE"
if currentSide == "SHORT" and close > emaSlow
currentSide := "NONE"
// ==============================================================================
// 5. VISUALIZACIÓN PULCRA Y PROFESIONAL (CERO CONTAMINACIÓN VISUAL)
// ==============================================================================
buyBgColor = color.new(#00e676, labelTransp)
buyTextColor = color.new(color.white, 10)
sellBgColor = color.new(#ff1744, labelTransp)
sellTextColor= color.new(color.white, 10)
txtBuy = labelStyle == "Detallado con SL y TP" ? "BUY ▲\nSL: " + str.tostring(slPrice, "#.##") + "\nTP: " + str.tostring(tpPrice, "#.##") : "▲ BUY"
txtSell = labelStyle == "Detallado con SL y TP" ? "SELL ▼\nSL: " + str.tostring(slPrice, "#.##") + "\nTP: " + str.tostring(tpPrice, "#.##") : "▼ SELL"
tooltipBuy = "Entrada BUY Sniper Institucional\nPrecio: " + str.tostring(close, "#.##") + "\nStop Loss: " + str.tostring(slPrice, "#.##") + "\nTake Profit (1:2): " + str.tostring(tpPrice, "#.##")
tooltipSell = "Entrada SELL Sniper Institucional\nPrecio: " + str.tostring(close, "#.##") + "\nStop Loss: " + str.tostring(slPrice, "#.##") + "\nTake Profit (1:2): " + str.tostring(tpPrice, "#.##")
// 1) Flechas limpias en ámbito global
plotshape(execBuy and labelStyle == "Solo Flechas Limpias", title="Flecha BUY", style=shape.triangleup, location=location.belowbar, color=#00e676, size=size.small)
plotshape(execSell and labelStyle == "Solo Flechas Limpias", title="Flecha SELL", style=shape.triangledown, location=location.abovebar, color=#ff1744, size=size.small)
// 2) Carteles y líneas de proyección SL / TP
if execBuy
if labelStyle != "Solo Flechas Limpias"
label.new(bar_index, low - (atr14 * 0.3), text=txtBuy, tooltip=tooltipBuy,
color=buyBgColor, textcolor=buyTextColor, style=label.style_label_up, size=size.small)
if showLines
line.new(bar_index, tpPrice, bar_index + 12, tpPrice, color=color.new(#10b981, 40), width=1, style=line.style_dotted)
line.new(bar_index, slPrice, bar_index + 12, slPrice, color=color.new(#ef4444, 40), width=1, style=line.style_dotted)
if execSell
if labelStyle != "Solo Flechas Limpias"
label.new(bar_index, high + (atr14 * 0.3), text=txtSell, tooltip=tooltipSell,
color=sellBgColor, textcolor=sellTextColor, style=label.style_label_down, size=size.small)
if showLines
line.new(bar_index, tpPrice, bar_index + 12, tpPrice, color=color.new(#10b981, 40), width=1, style=line.style_dotted)
line.new(bar_index, slPrice, bar_index + 12, slPrice, color=color.new(#ef4444, 40), width=1, style=line.style_dotted)
alertcondition(execBuy, title="[Sniper Institucional] BUY", message="BUY en {{ticker}} a {{close}}")
alertcondition(execSell, title="[Sniper Institucional] SELL", message="SELL en {{ticker}} a {{close}}")
// ==============================================================================
// 6. SELLO DE AGUA VISUAL EN PANTALLA (AUTORÍA OFICIAL)
// ==============================================================================
grp_brand = "6. Marca & Origen Oficial"
showWatermark = input.bool(true, "Mostrar Sello de Autoría", group=grp_brand, tooltip="Insignia discreta que acredita la autoría de @patagoniactiva.")
var table hud_brand = table.new(position.bottom_right, 1, 1, bgcolor=color.new(color.black, 60), border_color=color.new(color.white, 85), border_width=1)
if barstate.islast and showWatermark
table.cell(hud_brand, 0, 0, "OmniTrend SMC · by @patagoniactiva", text_color=color.new(#a7f3d0, 20), text_size=size.tiny)
// ==============================================================================
// © @patagoniactiva · CalculaHoy
// Indicator: OmniMomentum Matrix PRO - Squeeze & Institutional Flow
// License: Mozilla Public License 2.0 (MPL-2.0)
// Educational & Quantitative Research Tool
// ==============================================================================
//@version=6
indicator("OmniMomentum Matrix PRO [Onda Suave & Flujo Institucional]", overlay=false)
// Firma digital interna de integridad de origen
var string _ORIGIN_AUTH = "AUTH_PATAGONIACTIVA_OMNIMOMENTUM_PINE6_2026"
// ==============================================================================
// 1. PARÁMETROS DEL MULTI-OSCILADOR
// ==============================================================================
grp_sqz = "1. Squeeze Momentum (John Carter)"
lengthBB = input.int(20, "Longitud Bollinger", group=grp_sqz)
multBB = input.float(2.0, "Desviación Bollinger", group=grp_sqz)
lengthKC = input.int(20, "Longitud Keltner Channels", group=grp_sqz)
multKC = input.float(1.5, "Multiplicador Keltner ATR", group=grp_sqz)
grp_flow = "2. Onda de Flujo Institucional (Línea Celeste Suavizada)"
showFlow = input.bool(true, "Mostrar Onda Celeste de Flujo", group=grp_flow)
cmfLen = input.int(20, "Período Chaikin Money Flow (CMF)", group=grp_flow)
smoothLen = input.int(8, "Suavizado de la Curva (Armónica / Sin Ruidos)", minval=2, maxval=25, group=grp_flow, tooltip="Mayor valor = curva más suave y orgánica. Menor valor = más reactiva.")
showSignal = input.bool(true, "Mostrar Línea de Gatillo Amarilla (Signal Line)", group=grp_flow)
showDots = input.bool(true, "Mostrar Puntos de Cruce de Gatillo (Trigger Dots)", group=grp_flow)
grp_div = "3. Divergencias en RSI"
showDivs = input.bool(true, "Detectar Divergencias Automáticas", group=grp_div)
rsiLen = input.int(14, "Período RSI", group=grp_div)
// ==============================================================================
// 2. MOTOR SQUEEZE MOMENTUM (COMPRESIÓN & EXPANSIÓN)
// ==============================================================================
basis = ta.sma(close, lengthBB)
dev = multBB * ta.stdev(close, lengthBB)
upperBB = basis + dev
lowerBB = basis - dev
maKC = ta.sma(close, lengthKC)
rangeKC = ta.atr(lengthKC)
upperKC = maKC + (rangeKC * multKC)
lowerKC = maKC - (rangeKC * multKC)
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
highestH = ta.highest(high, lengthKC)
lowestL = ta.lowest(low, lengthKC)
avgMid = (highestH + lowestL + 2 * basis) / 4
valMom = ta.linreg(close - avgMid, lengthKC, 0)
colorMom = valMom > 0 ? (valMom > nz(valMom[1]) ? color.new(#00e676, 0) : color.new(#1b5e20, 0)) : (valMom < nz(valMom[1]) ? color.new(#ff1744, 0) : color.new(#7f0000, 0))
plot(valMom, "Momentum Histograma", color=colorMom, style=plot.style_columns, linewidth=3)
sqzDotColor = sqzOn ? color.black : (sqzOff ? color.orange : color.gray)
plot(0, "Puntos Squeeze (Línea Cero)", color=sqzDotColor, style=plot.style_circles, linewidth=2)
// ==============================================================================
// 3. ONDA CELESTE SUAVIZADA (CURVA ARMÓNICA SIN PICOS BRUSCOS)
// ==============================================================================
ad = (close == high and close == low) or high == low ? 0 : ((2 * close - low - high) / (high - low)) * volume
cmfRaw = ta.sma(ad, cmfLen) / (ta.sma(volume, cmfLen) + 0.00001)
// Suavizado armónico con EMA doble: elimina el ruido brusco de vela a vela
cmfHarmonic = ta.ema(ta.wma(cmfRaw, smoothLen), smoothLen)
// Auto-escala dinámica con el histograma
histDev = ta.stdev(valMom, 40)
histDevSafe = (histDev == 0 or na(histDev)) ? 1.0 : histDev
lineaCeleste = (cmfHarmonic / 0.18) * (histDevSafe * 1.4)
lineaSignal = ta.ema(lineaCeleste, 4) // Línea rápida de gatillo
// Sombreado de área translúcido muy elegante
pZero = plot(0, "Línea Cero", color=color.new(color.gray, 60), style=plot.style_line)
pCeleste = plot(showFlow ? lineaCeleste : na, "Onda de Flujo Celeste", color=#00e5ff, linewidth=2)
pSig = plot(showFlow and showSignal ? lineaSignal : na, "Línea de Gatillo Amarilla", color=color.new(#ffd600, 30), linewidth=1, style=plot.style_line)
fill(pCeleste, pZero, color=lineaCeleste >= 0 ? color.new(#00e5ff, 88) : color.new(#e040fb, 88), title="Sombreado Flujo")
// Puntos de Gatillo en cruces de la línea celeste con su señal
crossBull = ta.crossover(lineaCeleste, lineaSignal) and lineaCeleste < 0
crossBear = ta.crossunder(lineaCeleste, lineaSignal) and lineaCeleste > 0
plotshape(showDots and crossBull ? lineaCeleste : na, title="Gatillo Entrada Alcista", style=shape.circle, location=location.absolute, color=#00e676, size=size.tiny)
plotshape(showDots and crossBear ? lineaCeleste : na, title="Gatillo Salida Bajista", style=shape.circle, location=location.absolute, color=#ff1744, size=size.tiny)
// ==============================================================================
// 4. DETECCIÓN AUTOMÁTICA DE DIVERGENCIAS (RSI)
// ==============================================================================
rsiVal = ta.rsi(close, rsiLen)
plFound = not na(ta.pivotlow(rsiVal, 5, 5))
phFound = not na(ta.pivothigh(rsiVal, 5, 5))
bullCond = showDivs and plFound and (close[5] < ta.valuewhen(plFound, close[5], 1)) and (rsiVal[5] > ta.valuewhen(plFound, rsiVal[5], 1))
bearCond = showDivs and phFound and (close[5] > ta.valuewhen(phFound, close[5], 1)) and (rsiVal[5] < ta.valuewhen(phFound, rsiVal[5], 1))
plotshape(bullCond, title="Divergencia Alcista", location=location.bottom, color=color.yellow, style=shape.triangleup, size=size.small, text="DIV BULL")
plotshape(bearCond, title="Divergencia Bajista", location=location.top, color=color.fuchsia, style=shape.triangledown, size=size.small, text="DIV BEAR")
alertcondition(crossBull, title="[Oscilador] Cruce Alcista Flujo", message="Entrada de dinero institucional en {{ticker}}")
alertcondition(crossBear, title="[Oscilador] Cruce Bajista Flujo", message="Salida de dinero institucional en {{ticker}}")
// ==============================================================================
// 5. SELLO DE AGUA VISUAL EN PANEL (AUTORÍA OFICIAL)
// ==============================================================================
grp_brand = "4. Marca & Origen Oficial"
showWatermark = input.bool(true, "Mostrar Sello de Autoría", group=grp_brand, tooltip="Insignia que acredita la autoría de @patagoniactiva.")
var table hud_brand = table.new(position.bottom_right, 1, 1, bgcolor=color.new(color.black, 60), border_color=color.new(color.white, 85), border_width=1)
if barstate.islast and showWatermark
table.cell(hud_brand, 0, 0, "OmniMomentum PRO · by @patagoniactiva", text_color=color.new(#00e5ff, 20), text_size=size.tiny)
// ==============================================================================
// © @patagoniactiva · CalculaHoy
// Indicator: Indicador Cripto PRO - Supertrend ATR & Ribbon HUD
// License: Mozilla Public License 2.0 (MPL-2.0)
// Educational & Quantitative Research Tool
// ==============================================================================
//@version=6
indicator("Bloque 3: Indicador Cripto PRO [Canal Dinámico & HUD]", overlay=true, max_labels_count=500, max_lines_count=500)
// Firma digital interna de integridad de origen
var string _ORIGIN_AUTH = "AUTH_PATAGONIACTIVA_CRIPTO_PINE6_2026"
// ==============================================================================
// 1. CONFIGURACIÓN DEL SISTEMA
// ==============================================================================
grp_cripto = "1. Canal Dinámico Cripto (Supertrend ATR)"
atrPeriod = input.int(10, "Período ATR", minval=1, group=grp_cripto)
atrMult = input.float(2.2, "Multiplicador de Banda ATR", minval=0.5, step=0.1, group=grp_cripto)
antiWhipsaw = input.bool(true, "Filtro Anti-Lateralidad (ADX)", group=grp_cripto)
minAdx = input.int(20, "Fuerza Mínima ADX", minval=10, maxval=40, group=grp_cripto)
grp_ribbon = "2. Medias Móviles Dinámicas"
showRibbon = input.bool(true, "Mostrar Nube de Medias", group=grp_ribbon)
fastLen = input.int(9, "EMA Rápida 9", group=grp_ribbon)
midLen = input.int(21, "EMA Media 21", group=grp_ribbon)
slowLen = input.int(50, "EMA 50", group=grp_ribbon)
trendLen = input.int(200, "EMA 200 Tendencia", group=grp_ribbon)
grp_ui = "3. HUD Dashboard y Visuales"
showHud = input.bool(true, "Mostrar Panel HUD en Esquina Superior", group=grp_ui)
showLabels = input.bool(true, "Mostrar Etiquetas BUY / SELL", group=grp_ui)
labelTransp = input.int(55, "Difuminado de Carteles (0-90%)", minval=0, maxval=90, group=grp_ui)
// ==============================================================================
// 2. CÁLCULO DE MEDIAS MÓVILES
// ==============================================================================
ema9 = ta.ema(close, fastLen)
ema21 = ta.ema(close, midLen)
ema50 = ta.ema(close, slowLen)
ema200 = ta.ema(close, trendLen)
p9 = plot(showRibbon ? ema9 : na, "EMA 9", color=color.new(#00e676, 20), linewidth=1)
p21 = plot(showRibbon ? ema21 : na, "EMA 21", color=color.new(#ff5252, 20), linewidth=1)
fill(p9, p21, color=ema9 >= ema21 ? color.new(color.teal, 80) : color.new(color.maroon, 80))
plot(showRibbon ? ema50 : na, "EMA 50", color=color.new(#ffd600, 30), linewidth=2)
plot(showRibbon ? ema200 : na, "EMA 200", color=color.new(#ffffff, 10), linewidth=2)
// ==============================================================================
// 3. CANAL DINÁMICO CRIPTO (SUPERTREND ADAPTATIVO ATR)
// ==============================================================================
atrVal = ta.atr(atrPeriod)
[superTrend, direction] = ta.supertrend(atrMult, atrPeriod)
trendState = direction < 0 ? 1 : -1
prevTrend = nz(trendState[1], 1)
bandColor = trendState == 1 ? color.new(#00e676, 0) : color.new(#ff1744, 0)
plot(superTrend, "Banda Dinámica Cripto", color=bandColor, linewidth=3, style=plot.style_linebr)
// ==============================================================================
// 4. FILTRO ADX CONTRA EL RANGO LATERAL
// ==============================================================================
[diP, diM, adxVal] = ta.dmi(14, 14)
hasStrength = not antiWhipsaw or (adxVal >= minAdx)
// ==============================================================================
// 5. SEÑALES BUY / SELL CRIPTO (SIN REPAINTING)
// ==============================================================================
rawBuy = (trendState == 1 and prevTrend == -1) and (close > ema21) and hasStrength
rawSell = (trendState == -1 and prevTrend == 1) and (close < ema21) and hasStrength
var int lastSigIdx = -50
spacingOk = (bar_index - lastSigIdx) >= 8
execBuy = rawBuy and spacingOk and barstate.isconfirmed
execSell = rawSell and spacingOk and barstate.isconfirmed
var float slLevel = na
var float tp1Level = na
if execBuy
lastSigIdx := bar_index
slLevel := close - (atrVal * 1.5)
tp1Level := close + ((close - slLevel) * 1.5)
if execSell
lastSigIdx := bar_index
slLevel := close + (atrVal * 1.5)
tp1Level := close - ((slLevel - close) * 1.5)
// Carteles Difuminados
buyBg = color.new(#00e676, labelTransp)
buyTxt = color.new(color.white, 10)
sellBg = color.new(#ff1744, labelTransp)
sellTxt = color.new(color.white, 10)
if showLabels and execBuy
label.new(bar_index, low - (atrVal * 0.4), text="▲ BUY (CRIPTO)\nSL: " + str.tostring(slLevel, "#.##") + "\nTP1: " + str.tostring(tp1Level, "#.##"),
color=buyBg, textcolor=buyTxt, style=label.style_label_up, size=size.small)
if showLabels and execSell
label.new(bar_index, high + (atrVal * 0.4), text="▼ SELL (CRIPTO)\nSL: " + str.tostring(slLevel, "#.##") + "\nTP1: " + str.tostring(tp1Level, "#.##"),
color=sellBg, textcolor=sellTxt, style=label.style_label_down, size=size.small)
// ==============================================================================
// 6. PANEL HUD EN PANTALLA (CUADRO EN ESQUINA SUPERIOR DERECHA)
// ==============================================================================
var table hudTable = table.new(position.top_right, 2, 5, bgcolor=color.new(#111827, 40), border_color=color.new(#374151, 60), border_width=1)
if barstate.islast and showHud
table.cell(hudTable, 0, 0, "SISTEMA", bgcolor=#1f2937, text_color=color.white, text_size=size.small)
table.cell(hudTable, 1, 0, "INDICADOR CRIPTO PRO", bgcolor=#1f2937, text_color=#10b981, text_size=size.small)
table.cell(hudTable, 0, 1, "Régimen", text_color=color.gray, text_size=size.small)
table.cell(hudTable, 1, 1, trendState == 1 ? "ALCISTA (BULL)" : "BAJISTA (BEAR)",
text_color=trendState == 1 ? #00e676 : #ff1744, text_size=size.small)
table.cell(hudTable, 0, 2, "Fuerza ADX", text_color=color.gray, text_size=size.small)
table.cell(hudTable, 1, 2, str.tostring(adxVal, "#.0") + (adxVal >= 20 ? " (Fuerte)" : " (Rango)"),
text_color=adxVal >= 20 ? #00e676 : #f59e0b, text_size=size.small)
table.cell(hudTable, 0, 3, "Último SL", text_color=color.gray, text_size=size.small)
table.cell(hudTable, 1, 3, na(slLevel) ? "-" : str.tostring(slLevel, "#.##"), text_color=#ef4444, text_size=size.small)
table.cell(hudTable, 0, 4, "Objetivo TP1", text_color=color.gray, text_size=size.small)
table.cell(hudTable, 1, 4, na(tp1Level) ? "-" : str.tostring(tp1Level, "#.##"), text_color=#10b981, text_size=size.small)
// ==============================================================================
// 7. SELLO DE AGUA VISUAL EN PANTALLA (AUTORÍA OFICIAL)
// ==============================================================================
grp_brand = "4. Marca & Origen Oficial"
showWatermark = input.bool(true, "Mostrar Sello de Autoría", group=grp_brand, tooltip="Insignia discreta que acredita la autoría de @patagoniactiva.")
var table hud_brand = table.new(position.bottom_right, 1, 1, bgcolor=color.new(color.black, 60), border_color=color.new(color.white, 85), border_width=1)
if barstate.islast and showWatermark
table.cell(hud_brand, 0, 0, "Cripto PRO · by @patagoniactiva", text_color=color.new(#ffd600, 20), text_size=size.tiny)
alertcondition(execBuy, title="[Indicador Cripto] Señal BUY", message="BUY en {{ticker}} a {{close}}")
alertcondition(execSell, title="[Indicador Cripto] Señal SELL", message="SELL en {{ticker}} a {{close}}")
Cómo agregar los indicadores a TradingView
Guía rápida de 3 minutos para dejarlos instalados para siempre en tu cuenta
Abrí el Editor Pine
Entrá a TradingView en cualquier gráfico. En la barra inferior, hacé clic en la pestaña { } Editor Pine.
Crear Script en Blanco
Hacé clic en Abrir > Nuevo indicador en blanco. Seleccioná todo el texto por defecto y borralo para dejar el editor vacío.
Pegar y Guardar
Copiá el Bloque 1 (o Bloque 3) y pegalo. Hacé clic en Guardar con el nombre que quieras y luego en Añadir al gráfico.
Repetir para Bloque 2
Repetí el mismo proceso para el Bloque 2 PRO. Se ubicará automáticamente en el panel inferior como oscilador. ¡Listo!
Matriz Didáctica de Confluencia: Estudio de Escenarios Cuantitativos
Verificación simultánea de variables algorítmicas para el análisis técnico en simulador
-
1. En el Gráfico: Evento visual de
BUY ▲tras un pullback validado en la EMA 20 o una ruptura estructural BOS alcista. - 2. En el Squeeze: Histograma en columnas verdes crecientes o saliendo de fase de compresión.
- 3. En la Onda Celeste: La curva de flujo cruza al alza su línea de señal rápida (acumulación volumétrica positiva).
-
1. En el Gráfico: Evento visual de
SELL ▼tras rechazo dinámico en la EMA 20 o rotura BOS bajista. - 2. En el Squeeze: Histograma en valores negativos crecientes (rojo) en fase expansiva.
- 3. En la Onda Celeste: La curva de flujo cruza a la baja su línea de señal (presión vendedora neta).
OmniVector PRO: La Matriz Cuántica Institucional
Descifraste la Terminal Cuantitativa (Nivel 1) y dominaste la Suite de Indicadores (Nivel 2). Como premio exclusivo por tu curiosidad y disciplina, se ha desbloqueado el núcleo final: el algoritmo Clean Chart que traduce la absorción de volumen institucional directamente en las velas sin saturar tu pantalla.
Aviso Legal, Advertencia de Riesgo y Descargo Regulatorio
Marco normativo, ley de mercado de capitales y naturaleza estrictamente didáctica del software
Todo el material, algoritmos, explicaciones técnicas, visualizaciones y scripts en lenguaje Pine Script v5 provistos en CalculaHoy.com tienen por único propósito la educación técnica, la divulgación de herramientas informáticas y la investigación matemática aplicada al análisis de series temporales de precios. No constituyen, bajo ninguna circunstancia, una recomendación, oferta pública, sugerencia de inversión, ni solicitud de compra o venta de valores negociables, divisas, materias primas, contratos de futuros, opciones ni criptoactivos.
El autor de este sitio y los desarrolladores de los scripts no prestan servicios de asesoramiento financiero personalizado, administración discrecional de carteras ni intermediación de valores en los términos de la Ley N° 26.831 de Mercado de Capitales de la República Argentina, las Resoluciones Generales de la Comisión Nacional de Valores (CNV) ni de ningún otro organismo regulador internacional (como la SEC o ESMA). Las herramientas didácticas no evalúan ni contemplan la situación patrimonial, perfil del inversor, tolerancia al riesgo ni los objetivos financieros particulares de ningún usuario.
CalculaHoy.com no solicita, no recibe, no custodia, no intermedia ni administra fondos, depósitos, dinero fiduciario ni billeteras de criptoactivos de terceros. El usuario no deposita capital en este sitio web. Cualquier operación real debe ser cursada exclusivamente por el propio usuario a través de una entidad debidamente registrada y autorizada ante las autoridades competentes.
La operativa en mercados financieros, instrumentos derivados, contratos por diferencias (CFDs) y activos digitales/criptomonedas conlleva un alto nivel de riesgo de pérdida parcial o total del capital invertido. Los mercados de criptomonedas se caracterizan por una volatilidad asimétrica, falta de garantía estatal o cobertura del Banco Central de la República Argentina (BCRA) y ausencia de seguros de depósito. Los rendimientos simulados, resultados de backtesting o estadísticas pasadas jamás garantizan ni aseguran resultados futuros.
Si usted requiere asesoramiento financiero adaptado a su perfil de riesgo y patrimonio, le recomendamos expresamente recurrir a un profesional matriculado e inscripto en el Registro de Idóneos de la Comisión Nacional de Valores (CNV), actuando a través de un Agente de Liquidación y Compensación (ALyC), un Agente de Asesoramiento Global de Inversión (AAGI) o un Agente Productor (AP) habilitado.
El uso, copia o implementación de los códigos y estrategias aquí presentados es de la exclusiva, libre e indelegable responsabilidad del usuario. Ni CalculaHoy.com ni sus administradores asumirán responsabilidad alguna por pérdidas directas, indirectas, daños patrimoniales o perjuicios derivados del uso de la información, código o gráficos proporcionados.