Validación Post-Ejecución del Pronóstico Institucional

Validación Post-Ejecución del Pronóstico Institucional

XAUUSD — Semana del 13 al 17 de julio de 2026

Metodología evaluada: ATC Suite (ATC Radar Institucional + Institutional Scoring Engine + Decision Matrix + Executive Brief)

Objetivo de la revisión

Evaluar objetivamente la calidad del análisis emitido antes de la apertura semanal, contrastándolo con el comportamiento real del mercado, e identificar oportunidades de mejora bajo principios de mejora continua, Lean Thinking y gestión profesional del riesgo.

Resumen Ejecutivo

La revisión evidencia que el análisis institucional anticipó correctamente el contexto macro, las zonas de liquidez relevantes y la secuencia operacional esperada, aun cuando durante la semana el mercado estuvo influenciado por noticias macroeconómicas y geopolíticas que incrementaron la volatilidad.

Desde una perspectiva de gestión de riesgos, el modelo no buscó predecir cada movimiento, sino identificar dónde existía mayor probabilidad de intervención institucional y dónde el riesgo era más eficiente.

Ese objetivo se cumplió de forma satisfactoria.

Comparación Pronóstico vs Realidad

AspectoPronósticoResultadoEvaluación
Contexto HTF bajista✅ Excelente
Zona institucional 4005–3980Identificada previamenteRespetada y generó rebote✅ Excelente
Esperar evidencia antes de comprarCorrecto✅ Excelente
Rebote técnico desde demandaProbableOcurrió✅ Correcto
Evitar compras en mitad del rangoCorrecto✅ Excelente
Zona de venta 4135–4160MarcadaPrecio aún no la alcanza⏳ Pendiente
Zona institucional 4185–4215Marcada como decisión mayorAún no visitada⏳ Vigente

Validación de Hipótesis

Hipótesis 1

La zona 4005–3980 concentraba liquidez institucional.

Resultado

Confirmada.

El mercado descendió directamente hacia esa región.

Posteriormente apareció absorción de ventas y comenzó un rebote.

Esto coincide con la lectura de:

  • Discount
  • Buy Side Liquidity
  • Mitigation
  • Demand Zone

Evaluación

✅ Confirmada

Hipótesis 2

No existía confirmación para compras antes de llegar a demanda.

Resultado.

Correcto.

Comprar antes de alcanzar la zona hubiera significado asumir riesgo innecesario.

El mercado continuó cayendo exactamente hasta la región institucional.

Evaluación

✅ Confirmada

Hipótesis 3

El contexto HTF seguía siendo bajista.

Resultado.

Aunque apareció un rebote importante, la estructura principal continúa descendente.

En H4 todavía no existe evidencia suficiente de reversión estructural.

Evaluación

✅ Confirmada

Validación del Institutional Scoring Engine

Score emitido

56 /100

Clasificación

WATCH

En retrospectiva, este puntaje fue consistente con el desarrollo del mercado.

No existía suficiente evidencia para aprobar un escenario Premium.

El mercado permaneció:

  • lateral
  • correctivo
  • dependiente de noticias

El ISE evitó clasificar prematuramente un escenario como institucional.

Evaluación

Excelente calibración del modelo.

Gestión del Riesgo

Uno de los mayores aciertos fue que el modelo priorizó:

Esperar evidencia.

En vez de:

Anticipar el rebote.

Desde una óptica de Risk Management, esto reduce:

  • operaciones innecesarias
  • entradas impulsivas
  • drawdowns evitables
  • exposición emocional

En términos Lean, esto equivale a eliminar desperdicio operativo (muda) derivado de decisiones sin confirmación.

Influencia de Eventos Exógenos

Durante la semana existieron movimientos acelerados asociados a:

  • noticias geopolíticas,
  • fortaleza/debilidad del DXY (visible en el gráfico aportado),
  • expectativas macroeconómicas sobre el dólar.

Estos factores generaron volatilidad adicional que no puede inferirse únicamente desde la estructura técnica.

No obstante, el modelo mantuvo su utilidad porque delimitó previamente las zonas donde esa volatilidad tenía mayor probabilidad de encontrar respuesta institucional.

Oportunidades de Mejora

1. Incorporar un Índice de Riesgo Macroeconómico (MRI)

El análisis podría incluir un indicador cualitativo que clasifique la semana según exposición a eventos externos:

  • 🟢 Baja volatilidad esperada
  • 🟡 Moderada
  • 🔴 Alta (CPI, FOMC, NFP, conflictos geopolíticos, etc.)

Esto ayudaría a ajustar expectativas sin alterar la lectura estructural.

2. Medir la precisión de las zonas

Conviene comenzar a registrar métricas como:

  • porcentaje de reacción por zona,
  • profundidad máxima de penetración,
  • tiempo hasta la reacción,
  • extensión del movimiento posterior.

Con suficientes muestras, ATC Suite podría construir estadísticas propias sobre la eficacia de sus zonas institucionales.

3. Crear un KPI de «Calidad del Pronóstico»

Más allá de acertar la dirección, evaluar:

  • precisión de niveles,
  • calidad del contexto,
  • gestión del riesgo,
  • eficiencia de las entradas,
  • control del drawdown.

Esto alinearía el análisis con métricas ejecutivas, no solo con resultados de mercado.

Lecciones Aprendidas

La revisión refuerza varios principios fundamentales de la metodología:

  • El contexto prevalece sobre la entrada.
  • Las zonas institucionales son áreas de evaluación, no órdenes automáticas.
  • La confirmación reduce riesgo, aunque implique entrar más tarde.
  • La calidad del proceso es más importante que el resultado aislado de una operación.

Conclusión

Desde una perspectiva de gobierno, gestión de riesgos y mejora continua, la metodología ATC Suite mostró un desempeño sólido durante la semana evaluada.

Los principales logros fueron:

  • anticipación correcta de las zonas de mayor interés institucional;
  • preservación del contexto bajista de alta temporalidad;
  • evitación de entradas prematuras mediante un enfoque basado en evidencia;
  • adecuada calibración del Institutional Scoring Engine (clasificación WATCH), coherente con un mercado sin confirmación estructural alcista.

Las oportunidades identificadas se orientan a fortalecer la metodología mediante la integración de variables macroeconómicas y la creación de indicadores cuantitativos de desempeño.

Evaluación global del proceso

DimensiónResultado
Precisión del contexto HTF9.5/10
Precisión de zonas institucionales9.5/10
Gestión del riesgo10/10
Adaptabilidad a volatilidad exógena8.5/10
Calidad metodológica9.5/10
Calificación global9.4/10

Siguientes pasos.

El siguiente paso natural para ATC Suite es evolucionar desde una herramienta de análisis hacia un sistema medible de inteligencia institucional. Cada pronóstico debería registrarse y auditarse posteriormente, generando indicadores históricos de precisión, eficacia de las zonas, control del riesgo y comportamiento bajo distintos regímenes de mercado. Ese enfoque convertiría la metodología en un sistema de mejora continua basado en evidencia, comparable a un cuadro de mando integral utilizado por una organización para optimizar sus procesos.

📊 XAUUSD | ¿Rebote técnico o continuación de la distribución institucional?

📊 XAUUSD | ¿Rebote técnico o continuación de la distribución institucional?

Este fin de semana contrastamos dos enfoques diferentes de lectura del mercado sobre XAUUSD.

El primero, una lectura técnica tradicional realizada por uno de los Directivos que toma el curso de Gestión de Riesgos bajo enfoque de Trading, basada en estructura multi-timeframe y niveles operativos.

El segundo, mi análisis mediante ATC Suite, una metodología enfocada en Smart Money Concepts (SMC), ICT, Wyckoff, Order Flow y evaluación institucional basada en evidencia estructural.

Lo interesante es que, aunque ambos parten de metodologías distintas, las conclusiones convergen en los niveles clave.

Coincidencias más relevantes

🔴 Contexto Macro

La estructura de fondo continúa siendo correctiva.

Aunque aparecen rebotes en temporalidades menores, el contexto de mayor jerarquía (D1 y H4) todavía mantiene presión bajista.

En gestión profesional del riesgo, el contexto siempre tiene prioridad sobre la entrada.


🟢 Zona de soporte institucional

Ambos análisis identifican como área crítica:

4005 – 4040

Desde la óptica institucional, esta zona concentra:

✅ Liquidez compradora (SSL)

✅ Mitigation Blocks

✅ Descuento (Discount)

✅ Probable absorción de órdenes

Mientras esta región permanezca defendida, el mercado conserva capacidad para generar rebotes técnicos.


🔴 Zona de oferta institucional

La primera zona donde esperaríamos presión vendedora es:

4135 – 4160

Y la verdadera prueba institucional continúa siendo:

4185 – 4215

En ATC Suite esta región reúne varios factores de confluencia:

• Bearish Order Blocks

• Liquidez de Buy Side

• Posible mitigación institucional

• Confluencia dinámica con medias

• Zona Premium del rango actual

No significa que el precio deba caer allí.

Significa que es donde tendría sentido que los participantes institucionales vuelvan a decidir.


Escenario con mayor probabilidad

La evidencia visible sugiere el siguiente flujo:

1️⃣ Impulso hacia 4135–4160.

2️⃣ Si el momentum continúa, extensión hacia 4185–4215.

3️⃣ En esa región evaluar:

  • Confirmación de ruptura (BOS + CHOCH + aceptación).
  • Rechazo institucional.
  • Distribución.
  • Toma de beneficios.

No anticipar.

Esperar evidencia.


Lo que muestra el Institutional Scoring Engine (ISE)

Nuestro modelo cuantitativo asigna actualmente un escenario WATCH (56/100).

¿Por qué?

Porque todavía no existe suficiente evidencia para clasificar el mercado como un setup institucional de alta calidad.

Aspectos pendientes:

  • CHOCH confirmado.
  • Market Structure Shift validado.
  • BOS alcista de mayor jerarquía.
  • Recuperación sostenida de la zona 4185–4215.

Hasta entonces, el sesgo estratégico sigue siendo de observación, no de persecución del precio.


La diferencia entre operar y gestionar riesgo

Muchos traders preguntan:

«¿Compra o venta?»

Los participantes institucionales hacen una pregunta distinta:

¿Existe suficiente evidencia para asumir este riesgo?

Ese cambio de enfoque transforma por completo la toma de decisiones.

En ATC Suite no buscamos adivinar el siguiente movimiento.

Buscamos determinar si el mercado ofrece una ventaja estadística respaldada por estructura, liquidez y contexto.

Porque en los mercados, como en la gestión empresarial, una buena decisión no siempre produce un buen resultado; pero una mala metodología casi siempre termina produciendo malos resultados.


Zonas a vigilar durante la semana

🟢 Compradores

  • 4085–4065
  • 4040–4020
  • 4005–3980

🔴 Vendedores

  • 4135–4160
  • 4185–4215

La clave no será el nivel en sí, sino cómo reaccione el precio cuando llegue a él.

La evidencia sigue teniendo la última palabra.


Análisis desarrollado mediante ATC Suite — ATC Radar Institucional + Institutional Scoring Engine + Decision Matrix + Executive Brief.

#XAUUSD #Gold #Trading #SmartMoney #ICT #SMC #OrderFlow #RiskManagement #TechnicalAnalysis #TradingView #ATCSuite #InstitutionalTrading #Liquidity #Wyckoff #alextorresconsulting

Cómo Leer el Mercado: Integración del Panel Multitimeframe

Cómo Leer el Mercado: Integración del Panel Multitimeframe

Integración del Panel Multitimeframe y el Mapa de Sesiones

🧠 1. Fundamento Institucional

El mercado no se mueve por azar.
Cada desplazamiento responde a intenciones institucionales: acumulación, manipulación y distribución.
El objetivo del trader profesional es leer esas intenciones, no adivinarlas.

Por eso, este sistema combina dos herramientas:

  • Panel Multitimeframe Institucional → lectura fractal de tendencia y fuerza.
  • Mapa de Sesiones → lectura contextual de comportamiento por zonas horarias (Asia, Londres, Nueva York).

Juntas forman una visión completa del flujo institucional:
quién mueve el mercado, cuándo lo hace y hacia dónde lo empuja.

🧩 2. Estructura del análisis

Paso 1 – Análisis macro (D1 y H4)

Empieza con las temporalidades mayores; luego de que la sesión de Nueva York lleva al menos 30 minutos, yo opero en el horario diurno de América.
Dibuja las zonas clave: FVG, fractalidad, order blocks, zonas de liquidez.
Estas líneas son tu mapa institucional: muestran dónde el dinero grande entra o sale.

El Sesgo General del panel te indica si esas zonas están alineadas con el flujo institucional.
Si el sesgo es 🟢 alcista, prioriza zonas de demanda (long o compras); si es 🔴 bajista, enfócate en zonas de oferta (short o ventas).

Paso 2 – Contexto de sesiones

Usa el Mapa de Sesiones para observar cómo actuaron las tres principales zonas horarias:

  • Asia → acumulación o manipulación inicial.
  • Londres → expansión o ruptura.
  • Nueva York → distribución o reversión.

El panel te muestra qué sesión fue la más volátil y su dirección.
Esto te permite entender quién tuvo el control del día y si el movimiento actual tiene respaldo institucional.

Paso 3 – Ejecución operativa (3 m – 5 m – 1 m)

Aquí entra la precisión.
Operas solo con la tendencia del panel inferior izquierdo.
Esperas una reversión local (bajista → alcista o viceversa) y entras con confirmación.

Tu entrada se apoya en:

  • Cambio de color o dirección en el panel.
  • Reacción en zona institucional (FVG, order block, fractal).
  • Confirmación sobre VWAP.

El Sesgo General actúa como filtro maestro:
si el sesgo es alcista, tus compras tienen respaldo institucional; si es bajista, tus ventas están alineadas con el flujo dominante.

⚙️ 3. Fundamento técnico del Sesgo General

La línea Sesgo General resume el comportamiento de las cuatro temporalidades clave (D1, H4, H1, M15) en una sola lectura ejecutiva. Su función es mostrar la coherencia o divergencia institucional entre los distintos marcos de análisis.

🧩 Qué mide exactamente?

  1. Cuenta cuántos timeframes están alineados en dirección alcista o bajista.
  2. Evalúa la fuerza institucional del movimiento:
    • Si 3 o 4 TF coinciden → tendencia sólida y con respaldo institucional.
    • Si 2 TF coinciden → mercado mixto o en transición.
    • Si 1 TF domina → ruido o manipulación local.
  3. Asigna color y texto dinámico:
    • 🟢 Verde → mayoría alcista (sesgo comprador).
    • 🔴 Rojo → mayoría bajista (sesgo vendedor).
    • 🟡 Amarillo → mixto o indeciso.

⚙️ Cómo se interpreta operativamente

SituaciónLectura del Sesgo GeneralAcción sugerida
🟢 Alcista 3/4 TF o 4/4 TFAlta coherencia institucionalBuscar entradas en retrocesos alcistas o confirmaciones sobre VWAP
🔴 Bajista 3/4 TF o 4/4 TFSesgo vendedor dominanteBuscar ventas en retrocesos bajistas o rupturas bajo VWAP
🟡 Mixto 2/4 TFMercado en transiciónEsperar confirmación o consolidación antes de operar

💡 Ventaja institucional

El Sesgo General te da una visión macro instantánea sin cambiar de gráfico. Es como tener un “panel de control” que te dice si el mercado está alineado o fragmentado, permitiéndote:

  • Filtrar operaciones que van contra el flujo institucional.
  • Evitar entradas en zonas de indecisión.
  • Sincronizar tus setups con la dirección dominante del día.

🧘 4. Psicología y disciplina

El Sesgo General también cumple una función psicológica:
te obliga a esperar confirmación, evitando el overtrading y el revenge trading.

  • Si el sesgo no está alineado, no operas.
  • Si el sesgo cambia, revalúas.
  • Si el sesgo confirma, ejecutas con convicción.

La paciencia se convierte en tu ventaja institucional.
Operas solo cuando el mercado y las temporalidades están sincronizados.

5. Scripts utilizados en Pine de TradingView

Panel

//@version=5
indicator("EMAs personalizables + VWAP + Cruces (Modular)", overlay=true)
// === INPUTS DE VISIBILIDAD ===
showEmaShort = input.bool(true, "Mostrar EMA corta")
showEmaLong = input.bool(true, "Mostrar EMA larga")
showVWAP = input.bool(true, "Mostrar VWAP")
showSignals = input.bool(true, "Mostrar cruces")
// === INPUTS DE PERIODOS ===
emaShortLen = input.int(9, "Periodo EMA corta", minval=1)
emaLongLen = input.int(21, "Periodo EMA larga", minval=1)
// === INPUTS DE COLORES ===
emaShortColor = input.color(color.blue, "Color EMA corta")
emaLongColor = input.color(color.orange, "Color EMA larga")
vwapColor = input.color(color.purple, "Color VWAP")
// === INPUTS DE GROSOR ===
emaShortWidth = input.int(2, "Grosor EMA corta", minval=1, maxval=5)
emaLongWidth = input.int(2, "Grosor EMA larga", minval=1, maxval=5)
vwapWidth = input.int(1, "Grosor VWAP", minval=1, maxval=5)
// === INPUTS DE ESTILO ===
emaShortStyleOpt = input.string("line", "Estilo EMA corta", options=["line","histogram","area","columns","circles","stepline"])
emaLongStyleOpt = input.string("line", "Estilo EMA larga", options=["line","histogram","area","columns","circles","stepline"])
vwapStyleOpt = input.string("line", "Estilo VWAP", options=["line","histogram","area","columns","circles","stepline"])
// === CONVERSIÓN DE ESTILO ===
emaShortStyle = emaShortStyleOpt == "histogram" ? plot.style_histogram :
emaShortStyleOpt == "area" ? plot.style_area :
emaShortStyleOpt == "columns" ? plot.style_columns :
emaShortStyleOpt == "circles" ? plot.style_circles :
emaShortStyleOpt == "stepline" ? plot.style_stepline : plot.style_line
emaLongStyle = emaLongStyleOpt == "histogram" ? plot.style_histogram :
emaLongStyleOpt == "area" ? plot.style_area :
emaLongStyleOpt == "columns" ? plot.style_columns :
emaLongStyleOpt == "circles" ? plot.style_circles :
emaLongStyleOpt == "stepline" ? plot.style_stepline : plot.style_line
vwapStyle = vwapStyleOpt == "histogram" ? plot.style_histogram :
vwapStyleOpt == "area" ? plot.style_area :
vwapStyleOpt == "columns" ? plot.style_columns :
vwapStyleOpt == "circles" ? plot.style_circles :
vwapStyleOpt == "stepline" ? plot.style_stepline : plot.style_line
// === EMAs ===
emaShort = ta.ema(close, emaShortLen)
emaLong = ta.ema(close, emaLongLen)
// === VWAP ===
vwapLine = ta.vwap(close)
// === PLOTS ===
plot(showEmaShort ? emaShort : na, title="EMA corta", color=emaShortColor, linewidth=emaShortWidth, style=emaShortStyle)
plot(showEmaLong ? emaLong : na, title="EMA larga", color=emaLongColor, linewidth=emaLongWidth, style=emaLongStyle)
plot(showVWAP ? vwapLine : na, title="VWAP", color=vwapColor, linewidth=vwapWidth, style=vwapStyle)
// === CRUCES ===
cruceAlcista = ta.crossover(emaShort, emaLong)
cruceBajista = ta.crossunder(emaShort, emaLong)
plotshape(showSignals and cruceAlcista, title="Cruce Alcista", style=shape.triangleup, location=location.belowbar, color=color.new(color.lime, 0), size=size.small, text="▲ Alcista")
plotshape(showSignals and cruceBajista, title="Cruce Bajista", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.small, text="▼ Bajista")
// === ALERTAS ===
alertcondition(cruceAlcista, title="Alerta Cruce Alcista", message="EMA corta cruzó arriba de EMA larga")
alertcondition(cruceBajista, title="Alerta Cruce Bajista", message="EMA corta cruzó abajo de EMA larga")
// === PANEL INSTITUCIONAL MULTITF (CORREGIDO + SESGO GENERAL) ===
// === CÁLCULOS BASE TF ACTUAL ===
diff = math.abs(emaShort - emaLong)
maxDiff = ta.highest(diff, 200)
intensity = maxDiff == 0.0 ? 0.0 : diff / maxDiff
fuerzaPct = math.round(intensity * 100)
tendencia = emaShort > emaLong ? "Alcista" : emaShort < emaLong ? "Bajista" : "Neutral"
vwapEstado = close > vwapLine ? "Sobre VWAP" : close < vwapLine ? "Bajo VWAP" : "En VWAP"
// === COLOR PARA TF ACTUAL Y VWAP ===
colorActual = emaShort > emaLong ? color.lime : emaShort < emaLong ? color.red : color.yellow
colorVWAP = close > vwapLine ? color.lime : close < vwapLine ? color.red : color.yellow
// === FUNCIÓN MULTITF (datos + color) ===
f_tfData(tf) =>
emaS = request.security(syminfo.tickerid, tf, ta.ema(close, emaShortLen))
emaL = request.security(syminfo.tickerid, tf, ta.ema(close, emaLongLen))
d = math.abs(emaS - emaL)
maxD = request.security(syminfo.tickerid, tf, ta.highest(math.abs(emaS - emaL), 200))
inten = maxD == 0.0 ? 0.0 : d / maxD
fuerza = math.round(inten * 100)
tend = emaS > emaL ? "Alcista" : emaS < emaL ? "Bajista" : "Neutral"
col = emaS > emaL ? color.lime : emaS < emaL ? color.red : color.yellow
[tend, fuerza, col]
// === MULTITIMEFRAME ===
[d1T, d1F, d1C] = f_tfData("D")
[h4T, h4F, h4C] = f_tfData("240")
[h1T, h1F, h1C] = f_tfData("60")
[m15T, m15F, m15C] = f_tfData("15")
// === SESGO GENERAL ===
alcistas = (d1T == "Alcista" ? 1 : 0) + (h4T == "Alcista" ? 1 : 0) + (h1T == "Alcista" ? 1 : 0) + (m15T == "Alcista" ? 1 : 0)
bajistas = (d1T == "Bajista" ? 1 : 0) + (h4T == "Bajista" ? 1 : 0) + (h1T == "Bajista" ? 1 : 0) + (m15T == "Bajista" ? 1 : 0)
sesgoGeneral = alcistas > bajistas ? "🟢 Alcista " + str.tostring(alcistas) + "/4 TF" :
bajistas > alcistas ? "🔴 Bajista " + str.tostring(bajistas) + "/4 TF" : "🟡 Mixto"
sesgoColor = alcistas > bajistas ? color.lime : bajistas > alcistas ? color.red : color.yellow
// === PANEL ===
var table infoPanel = table.new(position.bottom_left, 2, 8, border_width=1, frame_color=color.new(color.white, 80))
// Encabezados
table.cell(infoPanel, 0, 0, "TF Actual", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 1, "D1", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 2, "H4", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 3, "H1", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 4, "M15", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 5, "VWAP", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 6, "Sesgo General", text_color=color.white, bgcolor=color.black)
table.cell(infoPanel, 0, 7, "", text_color=color.white, bgcolor=color.black)
// Valores
table.cell(infoPanel, 1, 0, tendencia + ", " + str.tostring(fuerzaPct) + "%", text_color=colorActual, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 1, d1T + ", " + str.tostring(d1F) + "%", text_color=d1C, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 2, h4T + ", " + str.tostring(h4F) + "%", text_color=h4C, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 3, h1T + ", " + str.tostring(h1F) + "%", text_color=h1C, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 4, m15T + ", " + str.tostring(m15F) + "%", text_color=m15C, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 5, vwapEstado, text_color=colorVWAP, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 6, sesgoGeneral, text_color=sesgoColor, bgcolor=color.new(color.black, 0))
table.cell(infoPanel, 1, 7, "", text_color=sesgoColor, bgcolor=color.new(color.black, 0))

Panel de Sesiones

//@version=5
indicator("Panel Sesiones – OHLC + Rango + Dirección + Resumen", overlay=true, max_labels_count=500)
//────────────────────────────────────────────
// INPUTS
//────────────────────────────────────────────
showPanel = input.bool(true, "Mostrar Panel")
showAsia = input.bool(true, "Asia")
showLondon = input.bool(true, "Londres")
showNY = input.bool(true, "Nueva York")
// Timeframe fijo configurable
fixedTF = input.timeframe("5", "Timeframe fijo para cálculos")
useFixedTF = input.bool(true, "Usar timeframe fijo para cálculos")
// Sesiones (CST México)
asiaSess = input.session("0000-0500", "Sesión Asia")
londonSess = input.session("0200-1000", "Sesión Londres")
nySess = input.session("0730-1500", "Sesión Nueva York")
// Columnas
colShowSession = input.bool(true, "Columna: Sesión")
colShowOpen = input.bool(true, "Columna: Apertura")
colShowHigh = input.bool(true, "Columna: Máximo")
colShowLow = input.bool(true, "Columna: Mínimo")
colShowClose = input.bool(true, "Columna: Cierre")
colShowRange = input.bool(true, "Columna: Rango")
colShowDirection = input.bool(true, "Columna: Dirección")
// Colores
colorAsia = color.new(color.gray, 0)
colorLondon = color.new(color.blue, 0)
colorNY = color.new(color.orange, 0)
//────────────────────────────────────────────
// FUNCIONES
//────────────────────────────────────────────
inSession(sess) =>
time(timeframe.period, sess) != 0
f_sessionOHLC(sess) =>
var float hi = na
var float lo = na
var float op = na
var float cl = na
if inSession(sess)
hi := na(hi) ? high : math.max(hi, high)
lo := na(lo) ? low : math.min(lo, low)
op := na(op) ? open : op
cl := close
[op, hi, lo, cl]
f_sessionClosed(sess) =>
not inSession(sess) and inSession(sess)[1]
//────────────────────────────────────────────
// TIMEFRAME BASE
//────────────────────────────────────────────
tfSource = useFixedTF ? fixedTF : timeframe.period
[asiaOp, asiaHi, asiaLo, asiaCl] = request.security(syminfo.tickerid, tfSource, f_sessionOHLC(asiaSess))
[londonOp, londonHi, londonLo, londonCl] = request.security(syminfo.tickerid, tfSource, f_sessionOHLC(londonSess))
[nyOp, nyHi, nyLo, nyCl] = request.security(syminfo.tickerid, tfSource, f_sessionOHLC(nySess))
//────────────────────────────────────────────
// VALORES FINALES DE SESIÓN (INDEPENDIENTES DEL TF DEL GRÁFICO)
//────────────────────────────────────────────
var float asiaOpFinal = na
var float asiaHiFinal = na
var float asiaLoFinal = na
var float asiaClFinal = na
var float londonOpFinal = na
var float londonHiFinal = na
var float londonLoFinal = na
var float londonClFinal = na
var float nyOpFinal = na
var float nyHiFinal = na
var float nyLoFinal = na
var float nyClFinal = na
// Detectar cierre de sesión usando el timeframe fijo
[asiaClosed, londonClosed, nyClosed] = request.security(syminfo.tickerid, tfSource, [f_sessionClosed(asiaSess), f_sessionClosed(londonSess), f_sessionClosed(nySess)])
if asiaClosed
asiaOpFinal := asiaOp[1]
asiaHiFinal := asiaHi[1]
asiaLoFinal := asiaLo[1]
asiaClFinal := asiaCl[1]
if londonClosed
londonOpFinal := londonOp[1]
londonHiFinal := londonHi[1]
londonLoFinal := londonLo[1]
londonClFinal := londonCl[1]
if nyClosed
nyOpFinal := nyOp[1]
nyHiFinal := nyHi[1]
nyLoFinal := nyLo[1]
nyClFinal := nyCl[1]
//────────────────────────────────────────────
// PANEL
//────────────────────────────────────────────
var table panel = table.new(position.top_right, 7, 5, border_width=1)
// Variables para resumen fijo
var string resumenFijo = na
var color colorFijo = na
f_fillRow(_row, _name, _op, _hi, _lo, _cl, _bgColor) =>
dir = (not na(_cl) and not na(_op)) ? (_cl > _op ? "Alcista" : _cl < _op ? "Bajista" : "Neutro") : "-"
rangeVal = (not na(_hi) and not na(_lo)) ? _hi - _lo : na
rangeStr = not na(rangeVal) ? str.tostring(rangeVal, format.mintick) : "-"
if colShowSession
table.cell(panel, 0, _row, _name, bgcolor=_bgColor)
if colShowOpen
table.cell(panel, 1, _row, na(_op) ? "-" : str.tostring(_op, format.mintick), bgcolor=_bgColor)
if colShowHigh
table.cell(panel, 2, _row, na(_hi) ? "-" : str.tostring(_hi, format.mintick), bgcolor=_bgColor)
if colShowLow
table.cell(panel, 3, _row, na(_lo) ? "-" : str.tostring(_lo, format.mintick), bgcolor=_bgColor)
if colShowClose
table.cell(panel, 4, _row, na(_cl) ? "-" : str.tostring(_cl, format.mintick), bgcolor=_bgColor)
if colShowRange
table.cell(panel, 5, _row, rangeStr, bgcolor=_bgColor)
if colShowDirection
table.cell(panel, 6, _row, dir, bgcolor=_bgColor)
[rangeVal, dir]
//────────────────────────────────────────────
// RENDER PANEL + RESUMEN
//────────────────────────────────────────────
if showPanel
// Encabezados
table.cell(panel, 0, 0, "SESIÓN", bgcolor=color.black, text_color=color.white)
table.cell(panel, 1, 0, "APERTURA", bgcolor=color.black, text_color=color.white)
table.cell(panel, 2, 0, "MÁXIMO", bgcolor=color.black, text_color=color.white)
table.cell(panel, 3, 0, "MÍNIMO", bgcolor=color.black, text_color=color.white)
table.cell(panel, 4, 0, "CIERRE", bgcolor=color.black, text_color=color.white)
table.cell(panel, 5, 0, "RANGO", bgcolor=color.black, text_color=color.white)
table.cell(panel, 6, 0, "DIRECCIÓN", bgcolor=color.black, text_color=color.white)
row = 1
[rangeAsia, dirAsia] = f_fillRow(row, "Asia", asiaOpFinal, asiaHiFinal, asiaLoFinal, asiaClFinal, color.new(colorAsia, 80))
row += 1
[rangeLondon, dirLondon] = f_fillRow(row, "Londres", londonOpFinal, londonHiFinal, londonLoFinal, londonClFinal, color.new(colorLondon, 80))
row += 1
[rangeNY, dirNY] = f_fillRow(row, "Nueva York", nyOpFinal, nyHiFinal, nyLoFinal, nyClFinal, color.new(colorNY, 80))
row += 1
//────────────────────────────────────────────
// RESUMEN
//────────────────────────────────────────────
validRanges = array.new_float()
if not na(rangeAsia)
array.push(validRanges, rangeAsia)
if not na(rangeLondon)
array.push(validRanges, rangeLondon)
if not na(rangeNY)
array.push(validRanges, rangeNY)
maxRange = array.size(validRanges) > 0 ? array.max(validRanges) : na
string sesionMasVolatil = "—"
string dirMasVolatil = "—"
if not na(maxRange)
if rangeAsia == maxRange
sesionMasVolatil := "Asia"
dirMasVolatil := dirAsia
else if rangeLondon == maxRange
sesionMasVolatil := "Londres"
dirMasVolatil := dirLondon
else if rangeNY == maxRange
sesionMasVolatil := "Nueva York"
dirMasVolatil := dirNY
string resumen = ""
color colorResumen = color.new(color.gray, 70)
if useFixedTF
if na(resumenFijo) and sesionMasVolatil != "—"
resumenFijo := "Sesión más volátil: " + sesionMasVolatil + " – " + dirMasVolatil
if dirMasVolatil == "Alcista"
colorFijo := color.new(color.green, 0)
else if dirMasVolatil == "Bajista"
colorFijo := color.new(color.red, 0)
else
colorFijo := color.new(color.gray, 70)
resumen := na(resumenFijo) ? "Sesión más volátil: —" : resumenFijo
colorResumen := na(colorFijo) ? color.new(color.gray, 70) : colorFijo
else
resumen := "Sesión más volátil: " + sesionMasVolatil + " – " + dirMasVolatil
if dirMasVolatil == "Alcista"
colorResumen := color.new(color.green, 0)
else if dirMasVolatil == "Bajista"
colorResumen := color.new(color.red, 0)
else
colorResumen := color.new(color.gray, 70)
table.cell(panel, 0, 4, resumen, bgcolor=colorResumen, text_color=color.white)

🧭 6. Conclusión operativa

El sistema completo te da una visión de flujo institucional en tiempo real:

  1. Mapa macro (líneas SMC) → estructura y zonas de reacción.
  2. Mapa de Sesiones → comportamiento por zonas horarias.
  3. Panel Multitimeframe → fuerza y dirección fractal.
  4. Sesgo General → confirmación institucional y disciplina operativa.

Este enfoque no busca adivinar el mercado, sino leerlo con precisión.
Y esa precisión es lo que diferencia al trader impulsivo del trader institucional.

#Trading #ForexTrading #InstitutionalTrading #SmartMoneyConcepts #RiskManagement

7. Resultados de Testing Real

A una semana de pruebas, los resultados son prometedores en XAUUSD.

Interpretación Ejecutiva de Resultados

1. El sistema es rentable, pero aún está en fase de optimización

Una tasa de acierto del 64.18% indica que la lectura de mercado y la selección de entradas tienen una precisión sólida.
Sin embargo, el factor de ganancia de 1.1 revela algo importante:

El sistema gana más veces de las que pierde, pero todavía no capitaliza completamente sus operaciones ganadoras.

En términos institucionales:

  • La ventaja estadística existe.
  • La gestión del trade todavía tiene espacio para mejorar eficiencia.
  • El edge ya es positivo y sostenible si se mantiene la disciplina.

2. El riesgo está relativamente controlado

Los datos muestran:

  • Operaciones ganadoras promedio: +$3.17
  • Operaciones perdedoras promedio: -$5.15

Esto significa que:

  • Las pérdidas individuales son mayores que las ganancias promedio.
  • El sistema depende actualmente de la frecuencia de acierto para mantenerse rentable.

Ejecutivamente, esto sugiere:

Prioridad estratégica:

Mejorar el manejo de salida y dejar correr más las operaciones válidas.

No necesariamente necesitas “ganar más veces”.
Necesitas:

  • aumentar ligeramente el profit promedio,
  • o reducir marginalmente la pérdida promedio.

Con pequeños ajustes, el factor de ganancia podría escalar rápidamente a 1.3–1.5.

3. Excelente control emocional y operativo

El tiempo medio de retención es extremadamente revelador:

Tipo de operaciónTiempo
Ganadoras28 min
Perdedoras34 min

Esto transmite algo muy importante:

No existe una sobreexposición emocional extrema.

La diferencia entre trades positivos y negativos es pequeña.
Eso normalmente significa:

  • disciplina operativa,
  • ejecución consistente,
  • ausencia de “revenge trading” agresivo,
  • y capacidad de cortar operaciones relativamente rápido.

Muchos traders minoristas muestran exactamente lo contrario:

  • pérdidas enormes en duración,
  • ganancias cortas por miedo.

Aquí no se observa ese patrón destructivo.

4. Los resultados grandes confirman capacidad de captura

Las operaciones destacadas en Gold muestran capturas de:

  • +52 USD
  • +33 USD
  • +32 USD
  • +28 USD

Eso confirma que:

  • el sistema sí identifica movimientos con expansión,
  • existe capacidad real de explotar volatilidad,
  • y el trader no depende únicamente de micro-scalps.

Esto es clave porque valida:

“La estrategia puede escalar”.

Diagnóstico Ejecutivo Final

Fortalezas

✅ Alta tasa de acierto
✅ Consistencia operativa
✅ Control emocional visible en tiempos de exposición
✅ Capacidad de capturar movimientos amplios
✅ Sistema estadísticamente positivo

Áreas de mejora

⚠️ Profit factor aún bajo para escalamiento agresivo
⚠️ Ganancia promedio pequeña frente a pérdida promedio
⚠️ Optimización pendiente en gestión de salida y runners

Conclusión Estratégica

Los datos muestran algo más valioso que una simple rentabilidad:

Existe estructura operativa repetible.

Y eso, en trading profesional, es mucho más importante que un resultado aislado.

La consistencia ya está construida.
Ahora el siguiente nivel consiste en:

  • optimizar el R:R,
  • aumentar eficiencia de salida,
  • y convertir precisión en crecimiento exponencial controlado.