LootX

Datos de mercado: clústeres, delta, interés abierto y libro de órdenes

nuevo Actualizado 30 de septiembre de 2026 Esta página en PDF

Qué lee un script en LootScript además de las velas: clústeres, delta, interés abierto, tasa de financiación, historial y libro de órdenes en vivo, cinta de operaciones, screener, otra temporalidad e instrumento.

Además de las velas, un script en LootScript lee datos del flujo de órdenes: clústeres, delta, interés abierto, tasa de financiación, el historial del libro de órdenes grabado, el libro de órdenes en vivo y la cinta de operaciones, y las métricas del screener. No hace falta activar nada: en cuanto el script referencia, por ejemplo, cluster.poc, el terminal se suscribe automáticamente a los clústeres del instrumento y de la temporalidad del gráfico —incluso si el gráfico muestra velas normales. Cuando se quita el script del gráfico, la suscripción se libera.

En esta página — qué hay en cada espacio de nombres, de dónde vienen los datos, en qué exchanges están disponibles y cómo obtener valores de otra temporalidad u otro instrumento.

Regla principal: ausencia de datos = na, no 0

Cualquier valor referido en esta página puede ser na. Sucede si el exchange no está cubierto por el servidor, la temporalidad no está soportada, la historia aún se está cargando o la barra es más antigua que la historia disponible. Un cero significaría «no hubo trades», y eso es un hecho diferente: sumar ceros sustituidos puede parecer plausible y a la vez ser incorrecto.

Cada espacio de nombres tiene una bandera de disponibilidad — cluster.available, delta.available, oi.available, etc. Compruébala o usa la función na(x). El compilador no permite comparar con na usando ==.

Loot
indicator("Накопленная дельта без подмены нулём", overlay = false)
var float cvd = 0.0
if delta.available {
    cvd := cvd + delta.value
}
plot(delta.available ? cvd : na, "CVD", color = color.teal)

Por qué faltan datos lo indica la leyenda del gráfico junto al nombre del script: “exchange no cubierto”, “temporalidad no compatible”, “cargando datos…”, “no hay libro de órdenes abierto”, “screener no disponible”.

Origen de los datos

Espacio Qué es Historia en el gráfico
cluster.* Clústeres (footprint) de la barra: volumen por precios Hay, desde el servidor de clústeres
delta.* Delta de compras y ventas agresivas Hay
oi.* Interés abierto Hay
funding.* Tasa de financiación y sus cálculos Hay
depth.* Libro de órdenes grabado por el servidor, por barras Hay, con profundidad limitada
book.* Libro de órdenes en vivo Solo la última barra
tape.* Cinta de operaciones en vivo Solo la última barra
screener.* Métricas del screener por instrumento Solo la última barra

Clústeres: cluster.*

El volumen de cada nivel de precio dentro de la barra, separado en compras y ventas agresivas — los mismos datos que dibuja el gráfico footprint. Los niveles se numeran de abajo arriba, de 0 a cluster.levels - 1.

Nombre Qué devuelve
cluster.available Si hay clústeres en esta barra
cluster.levels Número de niveles de precio en la barra
cluster.price(i) Precio del nivel i
cluster.bid(i) Compras agresivas en el nivel i
cluster.ask(i) Ventas agresivas en el nivel i
cluster.total Todo el volumen de la barra
cluster.delta Compras menos ventas en todos los niveles
cluster.poc, cluster.poc_index Precio y número del nivel con mayor volumen
cluster.max_cell Volumen de la celda más grande de la barra
cluster.imbalance(i) Desbalance del nivel: +1 compras, -1 ventas, 0 ninguno
cluster.stacked_buy, cluster.stacked_sell Precio desde el que comienza la serie más larga de niveles con desbalance
cluster.stacked_buy_steps, cluster.stacked_sell_steps Longitud de esa serie en niveles
cluster.value_area(pct) Límite inferior y superior de la zona de valor; pct — fracción de volumen, 0.7 = 70 %
cluster.grid_step Paso de la rejilla de precios de la barra

Fíjate en los nombres: cluster.bid(i) son compras que “quitaron” un ask, no órdenes de compra en el libro.

Hay clústeres en temporalidades desde 30 segundos hasta 1 día.

Loot
indicator("POC и зона стоимости", overlay = true)
[vaLow, vaHigh] = cluster.value_area(0.7)
plot(cluster.poc, "POC", color = color.orange, style = plot.style_circles)
plot(vaHigh, "Верх зоны", color = color.gray, style = plot.style_linebr)
plot(vaLow, "Низ зоны", color = color.gray, style = plot.style_linebr)

Delta: delta.*

La diferencia entre compras agresivas y ventas agresivas en la barra. Los volúmenes están en monedas (la divisa base).

Nombre Qué devuelve
delta.value Delta de la barra: compras menos ventas
delta.buy, delta.sell Esas dos partes por separado
delta.cum Delta acumulada desde el inicio de la historia cargada
delta.min, delta.max Mínima y máxima de la delta dinámica dentro de la barra
delta.open, delta.high, delta.low, delta.close Delta de la barra en formato vela
delta.trades Número de operaciones en la barra
delta.usd Delta en la moneda cotizada, por sumas de las propias operaciones
delta.available Si hay delta en esta barra

delta.min y delta.max no se pueden deducir de los clústeres — indican el recorrido de la delta dentro de la barra y las calcula el servidor. Muestran, por ejemplo, que los compradores llevaron la barra y luego fue cerrada por vendedores. delta.usd es más preciso que delta.value * close: en barras volátiles el precio de las operaciones difiere mucho del precio de cierre.

delta.cum empieza en cero en la primera barra cargada, por lo que su nivel depende de la profundidad de la historia cargada. Compara cambios, no valores absolutos.

La delta está disponible en temporalidades desde 30 segundos.

Loot
indicator("Дельта и разворот внутри бара", overlay = false)
d = delta.value
reversed = delta.available and d < 0 and delta.max > -d
plot(d, "Дельта", style = plot.style_columns, color = d >= 0 ? color.teal : color.red)
plotshape(reversed, "Разворот", style = shape.xcross, location = location.top, color = color.orange, size = size.tiny)

Interés abierto: oi.*

Nombre Qué devuelve
oi.open, oi.high, oi.low, oi.close Interés abierto por barra en las unidades que publica el exchange
oi.coins Interés abierto en monedas
oi.usd Interés abierto en la moneda cotizada
oi.change Cambio de oi.close respecto a la barra anterior
oi.available Si hay datos en esta barra

Las unidades de oi.open…oi.close varían entre exchanges; para comparar exchanges usa oi.coins u oi.usd. El interés abierto llega en una rejilla de minutos: en temporalidades en segundos todos los valores son na.

Loot
indicator("Цена и открытый интерес", overlay = false)
dp = ta.change(close)
build = oi.available and dp > 0 and oi.change > 0
plot(oi.change, "Изменение OI", style = plot.style_columns, color = build ? color.teal : color.gray)

Tasa de financiación: funding.*

Nombre Qué devuelve
funding.rate Pronóstico de la tasa para el próximo cálculo
funding.interval_hours Horas entre cálculos
funding.settled true en la barra donde se hizo el cálculo
funding.settled_rate Tasa efectivamente debitada en esa barra; si hay varios cálculos en la barra — su suma
funding.cum Suma de tasas debitadas en la historia cargada
funding.available Si el instrumento tiene tasa de financiación

La tasa es una fracción, no porcentajes: 0.0001 = 0.01 %. El gráfico la muestra en porcentajes; el lenguaje no la reescala. Para comprobar hipótesis en la historia usa funding.settled_rate: funding.rate es un pronóstico que puede cambiar hasta el mismo cálculo. El spot no tiene funding; en temporalidades en segundos los valores son na.

Loot
indicator("Фандинг за расчёт, %", overlay = false)
plot(funding.rate * 100, "Прогноз ставки", style = plot.style_area, color = funding.rate >= 0 ? color.teal : color.red)
plotshape(funding.settled, "Расчёт", style = shape.circle, location = location.bottom, color = color.orange, size = size.tiny)

Historial del libro de órdenes: depth.*

El libro de órdenes tal como lo grabó el servidor — los mismos datos que dibuja el mapa de calor — desglosado por barras. A diferencia del book.* en vivo, estos valores existen en cada barra grabada. Los precios se agrupan en cestas; el volumen de la cesta es el mayor volumen que estuvo en esa cesta durante la barra, en monedas.

Nombre Qué devuelve
depth.available Si el libro está grabado para esa barra
depth.levels Número de cestas no vacías en la barra
depth.price(i) Límite inferior de la cesta i, en orden ascendente
depth.qty(i) Mayor volumen que estuvo en la cesta durante la barra
depth.side(i) +1 bids, -1 asks, 0 cesta estuvo en ambas caras
depth.at(price) Volumen en la cesta donde cae el precio
depth.grid_step Tamaño de la cesta en unidades de precio
depth.best_bid, depth.best_ask Mejores precios al final de la barra
depth.max_cell Volumen de la cesta más pesada
depth.bid_sum(pct), depth.ask_sum(pct) Volumen del lado dentro de pct % desde el centro
depth.imbalance(pct) Desbalance en la misma banda: de -1 a +1
depth.max_bid(pct), depth.max_ask(pct) Precio y volumen de la cesta más pesada del lado dentro de la banda

Limitaciones:

  • Los datos están donde está la mapa de calor del servidor, y en temporalidades desde un segundo.
  • El servidor guarda una banda de aproximadamente ±4 % respecto al precio. Fuera de ella depth.at devuelve na; dentro de la banda una cesta vacía devuelve 0.
  • La profundidad histórica es limitada: las barras más antiguas de una historia larga devuelven na.
  • Los valores de la barra en formación cambian mientras llegan datos.
Loot
indicator("Перекос записанного стакана", overlay = false)
band = input.float(1.0, "Полоса, % от цены", minval = 0.1, maxval = 4.0, step = 0.1)
imb = depth.imbalance(band)
plot(imb, "Перекос", style = plot.style_columns, color = imb >= 0 ? color.teal : color.red)

Para dibujar el libro grabado bajo las velas basta una sola línea heatmap.depth() en el script con overlay = true. Colores y umbrales están en la página Настройки и отрисовка.

Loot
indicator("Записанный стакан теплом", overlay = true)
heatmap.config(palette = heatmap.inferno, low = 25)
heatmap.depth()

Libro de órdenes en vivo y cinta: book.* y tape.*

El libro de órdenes en vivo y la cinta no los graba nadie, por eso los valores existen solo en la última barra, y en la historia siempre son na. Requieren tener abierta la panel del libro de órdenes del mismo instrumento: de lo contrario book.available y tape.available son falsos, y en la leyenda aparece “no hay libro de órdenes abierto”. En modo repetición estos datos no están disponibles.

Nombre Qué devuelve
book.bid(i), book.ask(i) Precio del nivel i; 0 — mejor precio
book.bid_qty(i), book.ask_qty(i) Volumen en el nivel, en monedas
book.spread Mejor ask menos mejor bid
book.mid Punto medio entre los mejores precios
book.imbalance(n) Desbalance de volumen en los n niveles superiores de cada lado: de -1 a +1
book.available Si hay snapshot del libro
tape.last_price, tape.last_qty Precio y volumen de la última operación
tape.last_side +1 comprador agresor, -1 vendedor, 0 — aún no hubo operaciones
tape.count(ms) Número de operaciones en los últimos ms milisegundos
tape.buy_volume(ms), tape.sell_volume(ms) Volumen de compras y ventas agresivas en la ventana
tape.max_print(ms) Operación más grande en la ventana
tape.available Si la cinta está conectada

La ventana de la cinta y la profundidad de book.imbalance se fijan con un número en el código o con la opción input.int. La ventana se cuenta desde la hora de la última operación en el exchange, no desde el reloj del equipo. El script solo tiene acceso al tail de la cinta —unas dos mil últimas operaciones—, por lo que en mercados muy activos una ventana larga no mostrará todo el intervalo.

Cuando un valor así se pasa a plot, el editor avisa: “Los datos sólo están en tiempo real — en el historial la serie está vacía”. Es esperado: a la izquierda de la última barra la serie está vacía. Las estrategias no pueden leer estos datos — véase Стратегии и тестер.

Loot
indicator("Перекос стакана", overlay = false)
levels = input.int(20, "Уровней с каждой стороны", minval = 1, maxval = 200)
imb = book.available ? book.imbalance(levels) : na
plot(imb, "Перекос", style = plot.style_area, color = imb >= 0 ? color.teal : color.red)
hline(0, "Ноль", color = color.gray)

Screener: screener.*

Las métricas del screener para el instrumento del gráfico son los mismos números que aparecen en sus columnas. No tienen historia: el valor existe solo en la última barra. La ventana se pasa como cadena, y no todas las métricas aceptan todas las ventanas.

Función Qué muestra Ventanas
screener.change(w) Cambio de precio "1m" "5m" "15m" "1h" "24h"
screener.vol(w) Volumen "1m" "5m" "15m" "1h" "24h"
screener.avg_vol(w) Volumen promedio "1m" "5m" "15m" "1h"
screener.rvol(w) Volumen relativo "1h" "24h"
screener.natr(w) NATR "1m" "5m"
screener.oi_delta(w) Cambio del interés abierto "1m" "5m" "1h" "24h"
screener.btc_corr(w) Correlación con BTC "1m" "5m"
screener.available Si el instrumento está cubierto por el screener —

Una ventana no listada en la tabla da na. Una métrica que no entra en tu suscripción al screener también es na. El editor marca la salida de estos valores con la misma advertencia que para el libro: en la historia la serie está vacía.

Loot
indicator("Скринер: RVOL и NATR", overlay = false)
plot(screener.rvol("1h"), "RVOL 1h", color = color.orange)
plot(screener.natr("5m"), "NATR 5m", color = color.teal)

Cobertura por exchange

Exchange Clústeres y delta Interés abierto y tasa de financiación
Binance, Bybit, OKX, Bitget, Gate.io, MEXC, KuCoin, BingX, AsterDEX spot y futuros Futuros
Hyperliquid Futuros; spot — no Futuros
Binance Alpha No: el exchange no publica el lado agresor No
Upbit No No
Datos Temporalidades
Clústeres De 30 segundos a 1 día
Delta Desde 30 segundos
Interés abierto, tasa de financiación Desde 1 minuto
Historial del libro de órdenes Desde 1 segundo, donde esté la mapa de calor del servidor
Libro en vivo, cinta Cualquier temporalidad, si está abierto el panel del libro
Screener Cualquier temporalidad, para instrumentos que el screener ve

La cobertura la determina el servidor de datos y puede cambiar. Es más seguro fiarse de la bandera .available y de la indicación en la leyenda.

Otra temporalidad y otro instrumento

request.security evalúa una expresión en otra serie — una temporalidad superior o otra moneda — y alinea el resultado con las barras del gráfico.

TEXT
request.security(symbol, timeframe, expression, gaps = false, lookahead = false, ignore_invalid_symbol = false)
  • symbol — en formato «EXCHANGE:Ticker», como en TradingView: "BINANCE:BTCUSDT.P", donde .P es el futuro perpetuo. El instrumento del gráfico es sym.ticker.
  • timeframe — cadena tipo "5", "60", "4h", "1D", "1W". La temporalidad del gráfico es tf.period.
  • expression — un número o varios números entre corchetes: [high, low].

Sin adelantarse al cierre. Por defecto la barra del gráfico ve el valor del último cierre de la barra superior. Por eso una EMA horaria en 5 minutos es en escalón que solo se mueve al cierre de la hora. Así el resultado en historia coincide con lo que habrías visto en vivo.

  • gaps = true — el valor solo está en la primera barra del gráfico donde aparece la barra superior nueva; después na.
  • ignore_invalid_symbol = true — un símbolo desconocido da na. Sin esto el script falla con error “Символ … неизвестен”.

Dentro de la expresión están disponibles las velas de la otra serie y los cálculos sobre ellas. No puedes pasar la variable del gráfico allí — solo los valores de input.*. El libro, la cinta y el screener no compilan dentro de la petición; clústeres, delta, interés abierto y funding de la otra serie devuelven na. Un script puede pedir hasta 8 pares “instrumento + temporalidad” distintos y hasta 32 llamadas a request.security.

Loot
indicator("EMA старшего таймфрейма", overlay = true)
len = input.int(20, "Длина EMA", minval = 2, maxval = 500)
tfHigh = input.timeframe("60", "Старший таймфрейм")
emaHigh = request.security(sym.ticker, tfHigh, ta.ema(close, len))
plot(emaHigh, "EMA", color = color.orange, style = plot.style_stepline)
Loot
indicator("Спред к другой бирже", overlay = false)
other = input.symbol("BYBIT:BTCUSDT.P", "Сравнить с")
px = request.security(other, tf.period, close, ignore_invalid_symbol = true)
plot(close - px, "Разница", color = color.orange)

Siguientes lecturas

FAQ

¿Por qué el script muestra valores vacíos de delta o clústeres?
No hay datos: el exchange no está cubierto por el servidor, la temporalidad no es compatible o el historial aún se está descargando. Esos valores son na, no cero; la razón la muestra la leyenda del indicador junto al nombre del script.
¿Puedo leer el libro de órdenes en el historial?
El book.* en vivo existe solo en la última barra y requiere que el panel del libro de órdenes esté abierto. El historial del libro de órdenes por barras lo proporciona depth.* — allí donde el servidor graba el mapa de calor.
¿Se repinta request.security desde una temporalidad superior?
Por defecto no: la barra del gráfico ve la última barra cerrada de la temporalidad superior. Mirar hacia adelante se habilita solo explícitamente con el parámetro lookahead = true, y el Editor lo advierte.
¿En qué exchanges hay interés abierto y tasa de financiación?
En los contratos de futuros de Binance, Bybit, OKX, Bitget, Gate.io, MEXC, KuCoin, BingX, AsterDEX y Hyperliquid, en temporalidades a partir de 1 minuto.