Alertas Institucionales con SMC: Mejora tu Trading

Alertas Institucionales con SMC: Mejora tu Trading

Este script SMC_BOS_FVG_OB_Pinbar_Sessions_Alerts, es un modelo institucional diseñado para identificar zonas de alta probabilidad basadas en estructura, liquidez y confirmación de intención. Su objetivo es estandarizar la lectura del mercado y ejecutar únicamente cuando se cumplen condiciones institucionales verificables.

A continuación, el manual que documenta la metodología, reglas operativas y ejemplos visuales para su aplicación profesional.

🎯 Objetivo

Este enfoque se fundamenta en:

  • Identificar dónde el mercado toma liquidez.
  • Esperar una ruptura estructural real (BOS).
  • Confirmar intención mediante pinbar institucional.
  • Ejecutar únicamente en mitigación institucional (FVG u OB).
  • Validar con la siguiente vela.
  • Filtrar por RR mínimo y sesión operativa.

Este proceso tiene el objetivo de eliminar ruido, reducir entradas falsas y alinear la ejecución con el comportamiento de mesas institucionales.

⚙️ Configuración Inicial

ParámetroDescripciónRecomendación
Left / Right barsSensibilidad de pivotes2–3 para intradía
RR mínimoRatio mínima para alertar entrada1.5 o superior
SesiónFiltro horarioAsia / Londres / NY según tu operativa
Dibujar zonaVisualización de FVG/OBActivado para backtest, desactivado para ejecución
AlertasActivar/desactivar eventosMantén activadas las de entrada y toque

🔍 Jerarquía de Confirmación

  1. Liquidity Taken → se limpia un extremo previo.
  2. Break of Structure (BOS) → ruptura real del último swing.
  3. Pinbar → rechazo fuerte institucional.
  4. Zona más cercana (FVG u OB) → punto de mitigación.
  5. Toque real de zona → precio entra en la zona.
  6. Confirmación de la siguiente vela → dirección validada.
  7. RR ≥ X y sesión válida → entrada activada.

🧩 Alertas Institucionales

El sistema genera alertas para:

  • BOS
  • Pinbar
  • Toque
  • Entrada

Cada alerta incluye:

  • Dirección (LONG/SHORT)
  • Entry
  • SL
  • TP
  • RR
  • Sesión

Esto permite operar sin estar pegado al gráfico.

TipoDescripciónMensaje 
BOSRuptura estructural“BOS ALCISTA/BAJISTA detectado” 
PinbarRechazo fuerte“Pinbar ALCISTA/BAJISTA detectado” 
ToqueMitigación real“TOQUE de zona (LONG/SHORT)” 
EntradaConfirmación completa“ENTRY LONG/SHORT ACTIVADAEntry: XSL: YTP: ZRR: nSesión: NY”

🧠 Interpretación Visual

  • Líneas amarillas: FVG (rango de desequilibrio).
  • Líneas naranjas: OB (última vela institucional).
  • Líneas rojas / verdes: SL y TP.
  • Línea amarilla continua: punto de entrada.

🧩 Reglas de Ejecución

  • No se anticipan entradas.
  • No se opera sin BOS.
  • No se opera sin pinbar.
  • No se opera sin toque real.
  • No se opera sin confirmación de la siguiente vela.
  • No se opera si RR < mínimo.
  • No se opera fuera de sesión.
  • SL siempre en el swing que generó la liquidez.
  • TP automático a 2R.

🧮 Optimización sugerida

SesiónCaracterísticasRecomendación
AsiaRango y acumulaciónPreparar liquidez
LondresExpansiónMayor frecuencia de BOS
NYManipulaciónMejor confirmación

Conclusiones

El sistema SMC Sniper permite ejecutar con precisión institucional, eliminando ruido y estandarizando la lectura del mercado. Su fortaleza radica en la secuencia lógica y la disciplina operativa.

Script para Pine

//@version=5
indicator("SMC_BOS_FVG_OB_Pinbar_Sessions_Alerts", overlay = true, max_labels_count = 500, max_lines_count = 500)
//---------------------------------------------------------
// INPUTS
//---------------------------------------------------------
left = input.int(2, "Left bars")
right = input.int(2, "Right bars")
showZone = input.bool(true, "Dibujar zona elegida (FVG u OB)")
// Alertas
alertBOS = input.bool(true, "Alerta: BOS detectado")
alertPinbar = input.bool(true, "Alerta: Pinbar detectado")
alertTouch = input.bool(true, "Alerta: Toque de zona")
alertEntry = input.bool(true, "Alerta: Entrada confirmada")
// Filtro de RR mínimo (ratio)
minRR = input.float(1.5, "RR minimo para alertar entrada", step = 0.1)
// Filtro de sesión
sessionChoice = input.string("Londres", "Sesion para alertar entrada", options = ["Asia", "Londres", "Nueva York"])
//---------------------------------------------------------
// SESIONES (ajusta horarios a tu broker si hace falta)
//---------------------------------------------------------
asiaSession = time(timeframe.period, "1800-0000")
londonSession = time(timeframe.period, "0200-0500")
newYorkSession = time(timeframe.period, "0700-1100")
inAsia = not na(asiaSession)
inLondon = not na(londonSession)
inNewYork = not na(newYorkSession)
sessionOK =
(sessionChoice == "Asia" and inAsia) or
(sessionChoice == "Londres" and inLondon) or
(sessionChoice == "Nueva York" and inNewYork)
//---------------------------------------------------------
// 1. Swings (estructura + liquidez)
//---------------------------------------------------------
swingHigh = ta.pivothigh(high, left, right)
swingLow = ta.pivotlow(low, left, right)
var float lastHigh = na
var float lastLow = na
if not na(swingHigh)
lastHigh := swingHigh
if not na(swingLow)
lastLow := swingLow
//---------------------------------------------------------
// 2. Liquidity Taken
//---------------------------------------------------------
liqBuy = not na(lastHigh) and high > lastHigh
liqSell = not na(lastLow) and low < lastLow
//---------------------------------------------------------
// 3. BOS
//---------------------------------------------------------
bosBull = liqBuy and close > lastHigh
bosBear = liqSell and close < lastLow
//---------------------------------------------------------
// 4. FVG
//---------------------------------------------------------
bullFVG = low[1] > high[2]
bearFVG = high[1] < low[2]
var float fvgTop = na
var float fvgBot = na
if bullFVG
fvgTop := low[1]
fvgBot := high[2]
if bearFVG
fvgTop := high[2]
fvgBot := low[1]
//---------------------------------------------------------
// 5. OB (Order Block)
//---------------------------------------------------------
var float obHigh = na
var float obLow = na
if bosBull
obHigh := high[1]
obLow := low[1]
if bosBear
obHigh := high[1]
obLow := low[1]
//---------------------------------------------------------
// 6. Pinbar Confirmation
//---------------------------------------------------------
body = math.abs(close - open)
upperWick = high - math.max(close, open)
lowerWick = math.min(close, open) - low
pinbarBull = lowerWick >= body * 2 and close > open
pinbarBear = upperWick >= body * 2 and close < open
//---------------------------------------------------------
// 7. ELECCION AUTOMATICA: FVG u OB (la mas cercana)
//---------------------------------------------------------
var float zone = na
var bool isFVG = false
// LONG
if bosBull and pinbarBull and not na(fvgBot) and not na(obHigh)
distFVG = math.abs(close - fvgBot)
distOB = math.abs(close - obHigh)
if distFVG < distOB
zone := fvgBot
isFVG := true
else
zone := obHigh
isFVG := false
// SHORT
if bosBear and pinbarBear and not na(fvgTop) and not na(obLow)
distFVG = math.abs(close - fvgTop)
distOB = math.abs(close - obLow)
if distFVG < distOB
zone := fvgTop
isFVG := true
else
zone := obLow
isFVG := false
//---------------------------------------------------------
// 8. TOQUE DE ZONA
//---------------------------------------------------------
touch = not na(zone) and low <= zone and high >= zone
//---------------------------------------------------------
// 9. CONFIRMACION DE LA SIGUIENTE VELA
//---------------------------------------------------------
bullNextConfirm = touch[1] and close > open and close > (low + (high - low) * 0.5)
bearNextConfirm = touch[1] and close < open and close < (high - (high - low) * 0.5)
//---------------------------------------------------------
// 10. ENTRADA FINAL + RR (ratio)
//---------------------------------------------------------
var float entry = na
var float sl = na
var float tp = na
var float rrRatio = na
// LONG
if bullNextConfirm
entry := zone[1]
sl := lastLow
tp := entry + (entry - sl) * 2.0
risk = math.abs(entry - sl)
reward = math.abs(tp - entry)
rrRatio := risk > 0 ? reward / risk : na
// SHORT
if bearNextConfirm
entry := zone[1]
sl := lastHigh
tp := entry - (sl - entry) * 2.0
risk = math.abs(sl - entry)
reward = math.abs(entry - tp)
rrRatio := risk > 0 ? reward / risk : na
//---------------------------------------------------------
// 11. DIBUJAR ZONA ELEGIDA
//---------------------------------------------------------
if showZone and not na(zone)
if isFVG
line.new(bar_index, fvgTop, bar_index - 1, fvgTop, extend = extend.right, color = color.new(color.yellow, 70))
line.new(bar_index, fvgBot, bar_index - 1, fvgBot, extend = extend.right, color = color.new(color.yellow, 70))
else
line.new(bar_index, zone, bar_index - 1, zone, extend = extend.right, color = color.new(color.orange, 70))
//---------------------------------------------------------
// 12. PLOTS
//---------------------------------------------------------
plot(entry, "Entry", color = color.new(color.yellow, 0), style = plot.style_linebr)
plot(sl, "SL", color = color.new(color.red, 0), style = plot.style_linebr)
plot(tp, "TP", color = color.new(color.green, 0), style = plot.style_linebr)
//---------------------------------------------------------
// 13. ALERTAS INSTITUCIONALES (simplificadas)
//---------------------------------------------------------
// BOS
if alertBOS and bosBull
alert("BOS ALCISTA detectado (LONG)", alert.freq_once_per_bar)
if alertBOS and bosBear
alert("BOS BAJISTA detectado (SHORT)", alert.freq_once_per_bar)
// PINBAR
if alertPinbar and pinbarBull
alert("Pinbar ALCISTA detectado", alert.freq_once_per_bar)
if alertPinbar and pinbarBear
alert("Pinbar BAJISTA detectado", alert.freq_once_per_bar)
// TOQUE
if alertTouch and touch
dir = bosBull ? "LONG" : bosBear ? "SHORT" : "NA"
alert("TOQUE de zona (" + dir + ")", alert.freq_once_per_bar)
// ENTRADA FINAL (con filtros RR + sesion)
entryLong = bullNextConfirm and not na(rrRatio) and rrRatio >= minRR and sessionOK
entryShort = bearNextConfirm and not na(rrRatio) and rrRatio >= minRR and sessionOK
if alertEntry and entryLong
msgLong = "ENTRY LONG | Entry: " + str.tostring(entry, format.mintick) +
" | SL: " + str.tostring(sl, format.mintick) +
" | TP: " + str.tostring(tp, format.mintick) +
" | RR: " + str.tostring(rrRatio, format.mintick) +
" | Sesion: " + sessionChoice
alert(msgLong, alert.freq_once_per_bar)
if alertEntry and entryShort
msgShort = "ENTRY SHORT | Entry: " + str.tostring(entry, format.mintick) +
" | SL: " + str.tostring(sl, format.mintick) +
" | TP: " + str.tostring(tp, format.mintick) +
" | RR: " + str.tostring(rrRatio, format.mintick) +
" | Sesion: " + sessionChoice
alert(msgShort, alert.freq_once_per_bar)

Ejemplo visual

En esta imagen vemos la entrada un poco mas arriba de la línea amarilla (por el lag de tiempo del trader), luego del ticker Alcista, triangulo verde a las 820 del 20262005  (este viene del script publicado antes de esta publicación: https://alextorres.consulting/2026/05/15/como-leer-el-mercado-integracion-del-panel-multitimeframe/), nos indica un TP que se cumple una hora después (20260520 0915) y sin tocar SL (línea roja en el gráfico), en un momento volátil del XAUUSD ese 20 de mayo del 2026 que se esperaba las FOMC Meeting Minutes a las 12 pm:

Ilustraciòn tomada de https://www.forexfactory.com

📘 MAPA INSTITUCIONAL DE SESIONES

📘 MAPA INSTITUCIONAL DE SESIONES

Cómo se comporta cada mercado, quién impulsa, quién corrige y por qué Asia rellena los vacíos de Londres


🎯 1. Estructura general del día institucional

Tres sesiones, tres roles distintos.
El precio no se mueve igual porque cada sesión tiene distinta liquidez, participantes y objetivos.

🟦 ASIA — Consolida y corrige

  • Volumen bajo.
  • Rango estrecho (Asian Range).
  • Reequilibra el precio → rellena FVG/imbalances.
  • Ajuste de inventarios de market makers.
  • Prepara el terreno para Londres.

Rol: Consolidación + Corrección + Relleno de vacíos.


🟩 LONDRES — Impulsa

  • Alta liquidez institucional.
  • Rompe el Asian Range.
  • Crea tendencia del día.
  • Genera desequilibrios (FVG, imbalances).
  • Movimientos direccionales limpios.

Rol: Impulso + Creación de desequilibrios.


🟥 NUEVA YORK — Decide

  • Mayor volumen del día.
  • Confirma o revierte lo que Londres inició.
  • Barridas de liquidez (liquidity grabs).
  • Movimientos violentos en apertura y cierre.
  • Crea nuevos desequilibrios.

Rol: Confirmación o reversión + Barridas + Decisión del día.


🧩 2. ¿Por qué Asia rellena los vacíos de Londres?

No es magia. Es mecánica de mercado.

✔ 1. Menor liquidez → precio vuelve al equilibrio

Sin órdenes grandes, el precio tiende a suavizar los excesos previos.

✔ 2. Los algoritmos buscan eficiencia

Los desequilibrios creados por Londres/NY suelen ser rellenados en sesiones de bajo volumen.

✔ 3. Market makers ajustan inventarios

Antes de Londres necesitan volver a zonas de valor.

✔ 4. Asia opera dentro del “fair value”

Por eso rellena FVG, imbalances y vuelve a zonas institucionales.


📐 3. Mapa visual del flujo del día

00:00–05:00 CST — ASIA

  • Rango estrecho
  • Correcciones
  • Relleno de FVG
  • Reequilibrio

02:00–04:00 CST — Pre-Londres

  • Pequeñas trampas
  • Liquidez inducida
  • Últimos ajustes

02:00–10:00 CST — LONDRES

  • Ruptura del Asian Range
  • Impulso direccional
  • Creación de FVG
  • Tendencia del día

07:30–15:00 CST — NUEVA YORK

  • Confirmación o reversión
  • Barridas
  • Movimientos violentos
  • Cierre del día

🎛 4. Cómo usar esto en tu sistema (aplicado a XAUUSD, DXY, USDJPY)

Paso 1 — Marca el Asian Range

Te da el “campo de batalla” del día.

Paso 2 — Identifica los FVG creados por Londres

Son los desequilibrios que Asia suele rellenar.

Paso 3 — Observa si Asia reequilibra

Si Asia rellena → Londres tendrá un movimiento más limpio.
Si Asia NO rellena → Londres suele ir a rellenar primero.

Paso 4 — Opera retrocesos en Londres

Tu estilo de vender retrocesos en tendencia bajista encaja perfecto aquí.

Paso 5 — NY decide

Si Londres marcó tendencia, NY la confirma o la revierte.


🧭 5. Plantilla institucional para tus análisis diarios

Puedes copiar esto y usarlo cada mañana:

1. Asian Range:

  • Alto:
  • Bajo:
  • ¿Rellenó FVG? Sí/No
  • ¿Consolidó? Sí/No

2. Londres:

  • ¿Rompió el Asian Range?
  • ¿Creó FVG?
  • ¿Dirección dominante?

3. NY:

  • ¿Confirma o revierte?
  • ¿Barrida previa?
  • ¿Liquidez objetivo?

Glosario

He aquí algunos conceptos utilizados en este artículo que podrían resultarte interesantes:

Un imbalance es un fallo en la eficiencia del mercado donde un flujo masivo de órdenes unilaterales desplaza el precio agresivamente, dejando niveles sin negociar. Esta «deuda» de liquidez actúa como un imán técnico que el precio tiende a buscar para reequilibrarse antes de validar la continuidad de una tendencia.

Un FVG es un desequilibrio de liquidez entre tres velas donde los extremos de la primera y la tercera no se solapan, dejando un vacío en el precio. Funciona como un imán de alta probabilidad que el mercado tiende a rellenar para corregir ineficiencias antes de continuar su tendencia estructural.

No confundas un movimiento rápido con un imbalance operativo. Un movimiento veloz con mechas largas que se solapan no es un imbalance, es volatilidad. El verdadero desequilibrio es aquel que deja espacio en blanco entre los extremos de las velas circundantes. Si el precio no deja una «huella» de ineficiencia clara, no hay obligación de que regrese pronto.

Debes entender que el imbalance es un cambio de estado en el sistema, mientras que la volatilidad es solo una oscilación térmica. No operes el movimiento; opera la aceptación o rechazo de los niveles de volumen que ese movimiento deja atrás.

Si no ves un vacío claro en el perfil de volumen, no hay imbalance; solo hay gente operando con pánico.

En la próxima publicación encontrarás una herramienta, un script para Pine donde podrás ver información importante de las sesiones de mercado directo en tu Trading View.