📘 MANUAL DE USO – PANEL DE SESIONES (OHLC + Rango + Dirección + Resumen Institucional)

📘 MANUAL DE USO – PANEL DE SESIONES (OHLC + Rango + Dirección + Resumen Institucional)

1. Introducción

El Panel de Sesiones es un indicador institucional diseñado para mostrar, de forma clara y compacta:

  • Los valores OHLC (Apertura, Máximo, Mínimo, Cierre) de cada sesión.
  • El rango (High – Low).
  • La dirección (Alcista, Bajista o Neutro).
  • Un resumen automático que identifica la sesión más volátil y su dirección.
  • La opción de trabajar con un timeframe fijo (M3, M5, M15…) para mantener los valores estables sin importar el timeframe del gráfico.

Este panel está optimizado para análisis institucional, backtesting visual y toma de decisiones rápidas.

2. Objetivo del Indicador

El objetivo es ofrecer una vista ejecutiva de las tres sesiones principales:

  • Asia
  • Londres
  • Nueva York

Mostrando:

  • Cómo se comportó cada sesión.
  • Qué tan amplia fue su volatilidad.
  • En qué dirección cerró.
  • Cuál fue la sesión dominante del día.

3. Configuración Inicial

El indicador incluye varios parámetros configurables desde el panel de Inputs.

3.1. Mostrar/Ocultar Panel

Permite activar o desactivar el panel completo.

3.2. Selección de Sesiones

Puedes activar o desactivar individualmente:

  • Asia
  • Londres
  • Nueva York

3.3. Timeframe Fijo

Este es uno de los elementos clave del indicador.

  • fixedTF: selecciona el timeframe base (ej. M3, M5, M15).
  • useFixedTF:
    • ON → El panel y el resumen se calculan exclusivamente desde el timeframe fijo.
    • OFF → El panel se adapta dinámicamente al timeframe del gráfico.

Ventaja:
Cuando useFixedTF = true, cambiar el timeframe del gráfico no altera los valores del panel.

4. Columnas del Panel

El panel muestra hasta 7 columnas:

  1. Sesión
  2. Apertura (Open)
  3. Máximo (High)
  4. Mínimo (Low)
  5. Cierre (Close)
  6. Rango (High – Low)
  7. Dirección (Alcista / Bajista / Neutro)

Cada columna puede activarse o desactivarse según tus necesidades.

5. Cálculo de OHLC por Sesión

El indicador calcula los valores OHLC de cada sesión usando:

  • El timeframe fijo (si está activado).
  • O el timeframe del gráfico (si está desactivado).

El cálculo es robusto y funciona correctamente en cualquier timeframe, incluso si la sesión no coincide con el cierre exacto de una vela.

6. Cierre de Sesión y Valores Finales

El indicador detecta automáticamente el cierre real de cada sesión, sin depender del timeframe del gráfico.

Cuando una sesión termina:

  • Se guardan sus valores finales.
  • Estos valores permanecen estables durante el resto del día.
  • El panel siempre muestra los datos de la última sesión completada.

7. Rango y Dirección

7.1. Rango

Es la diferencia entre el máximo y el mínimo de la sesión:

Rango = High – Low

7.2. Dirección

Se determina comparando el cierre con la apertura:

  • Alcista → Cierre > Apertura
  • Bajista → Cierre < Apertura
  • Neutro → Cierre = Apertura

8. Resumen Institucional

En la última fila del panel aparece un resumen:

“Sesión más volátil: Londres – Bajista”

Este resumen identifica:

  • La sesión con mayor rango.
  • Su dirección.
  • Su color (verde, rojo o gris).

Modo Fijo

Cuando useFixedTF = true:

  • El resumen se calcula una sola vez.
  • Permanece estable aunque cambies de timeframe.

Modo Dinámico

Cuando useFixedTF = false:

  • El resumen se recalcula en cada timeframe.
  • Útil para análisis intradía.

9. Interpretación del Panel

9.1. Lectura rápida

El panel permite identificar en segundos:

  • Qué sesión tuvo mayor volatilidad.
  • Qué sesión dominó el día.
  • Si el mercado estuvo tendencial o lateral.
  • Si hubo continuidad o reversión entre sesiones.

9.2. Ejemplos

Ejemplo 1 – Día tendencial alcista

  • Asia: Alcista
  • Londres: Alcista
  • NY: Alcista
  • Resumen: “Londres – Alcista”

Ejemplo 2 – Reversión

  • Asia: Alcista
  • Londres: Bajista
  • NY: Bajista
  • Resumen: “Nueva York – Bajista”

Ejemplo 3 – Volatilidad en Asia

  • Asia: Rango amplio
  • Londres: Rango pequeño
  • NY: Rango medio
  • Resumen: “Asia – Neutro”

10. Recomendaciones de Uso

  • Usa fixedTF = M5 para análisis institucional.
  • Usa fixedTF = M3 para scalping.
  • Usa fixedTF = M15 para swing trading.
  • Mantén useFixedTF = true si quieres estabilidad entre timeframes.
  • Cambia a useFixedTF = false si quieres ver cómo se comporta cada sesión en distintos marcos.

11. Ventajas del Indicador

  • Claridad institucional.
  • Datos consistentes entre timeframes.
  • Resumen automático.
  • Ideal para backtesting visual.
  • Perfecto para presentaciones, reportes y análisis ejecutivos.
  • Diseño limpio y profesional.

12. Conclusión

Este indicador te permite entender el comportamiento diario del mercado de forma inmediata, precisa y visualmente clara.
Es una herramienta diseñada para traders que buscan orden, consistencia y análisis institucional.

13. Script de Pine para uso en Trading View

//@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)

📘 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.