LootX

Ajustes y renderizado

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

Ajustes input.* en la ventana del indicador, líneas plot y sus estilos, niveles hline, rellenos fill, fondo y color de velas, marcadores, etiquetas, segmentos, rectángulos, tablas, colores y transparencia. Límites: tres plot dibujables y 500 objetos de cada tipo.

Esta página trata sobre lo que el usuario ve y puede cambiar. Aquí se describen los ajustes que el script expone en la ventana del indicador, las líneas y sus estilos, los niveles y rellenos, el fondo y el color de las velas, los marcadores, las etiquetas, los segmentos, los rectángulos y las tablas, así como los colores y la transparencia. Al final hay una sección sobre los límites que conviene conocer de antemano.

Ajustes: input.*

Cada llamada a input.* se convierte en una fila de la pestaña Entradas en la ventana de ajustes del indicador. Las filas aparecen en el orden en que están escritas las llamadas en el script. El primer argumento establece el valor por defecto; el segundo, la etiqueta de la fila.

Llamada Qué aparece en la ventana de ajustes
input.int Campo para un número entero
input.float Campo para un número decimal
input.bool Casilla de verificación
input.color Selector de color
input.string Lista desplegable si se define options; sin ella, campo de texto
input.source Lista desplegable de series: open, high, low, close, hl2, hlc3, ohlc4, hlcc4, volume
input.enum Lista desplegable con las etiquetas del enum
input.timeframe Campo de texto; con options, lista desplegable
input.symbol Campo de texto

El ejemplo siguiente reúne cinco tipos de ajustes en un solo script:

Loot
indicator("Средняя на выбор", overlay = true)

enum Basis {
    sma = "Простая"
    ema = "Экспоненциальная"
    wma = "Взвешенная"
}

basis     = input.enum(Basis.ema, "Тип средней")
length    = input.int(50, "Период", minval = 1, maxval = 500)
src       = input.source(close, "Источник")
lineColor = input.color(color.orange, "Цвет линии")
showBg    = input.bool(false, "Подсвечивать фон")

avg = switch basis {
    Basis.sma => ta.sma(src, length)
    Basis.ema => ta.ema(src, length)
    =>           ta.wma(src, length)
}

plot(avg, "Средняя", color = lineColor, linewidth = 2)
bgcolor(showBg and close > avg ? color.new(color.teal, 40) : na, title = "Фон")

En la ventana de ajustes aparecerá la lista desplegable «Тип средней» con los elementos «Простая», «Экспоненциальная» y «Взвешенная». Debajo estarán el campo del período, la lista de fuentes, el selector de color y la casilla de verificación. Cómo declarar enums se explica en la sección Свои типы и перечисления.

Parámetros de números y cadenas

  • minval y maxval establecen los límites: el campo no aceptará un período menor que minval ni mayor que maxval.
  • step en input.float define cuántos decimales muestra el campo: con step = 0.1 se ve un decimal. El campo no tiene flechas; el valor se escribe con el teclado.
  • options en input.string y input.timeframe convierte el campo en una lista desplegable. El valor por defecto debe ser uno de los elementos; de lo contrario, el compilador dará un error.
  • tooltip, group e inline son aceptados por el compilador, pero por ahora no afectan el aspecto de la ventana de ajustes.
Loot
indicator("Цена для расчёта")

mode  = input.string("Закрытие", "Считать по", options = ["Закрытие", "Середина свечи"])
price = mode == "Закрытие" ? close : hl2

plot(ta.rsi(price, 14), "RSI", color = color.purple)

En input.source, el valor por defecto también puede ser una serie de datos de mercado, como delta.cum. Esa serie aparecerá como primer elemento de la lista, antes de las series de precios. Si el valor por defecto es una expresión como (high + low) / 2, no habrá fila en la ventana de ajustes: no hay nada que elegir.

Todavía no existen ajustes separados para la hora, la sesión de trading ni para el precio que se elige con un clic en el gráfico.

Dónde se guardan los valores elegidos

Los valores se recuerdan por separado para cada indicador en cada gráfico: dos copias del mismo script en paneles distintos pueden tener períodos diferentes. El botón Por defecto en la ventana de ajustes restaura los valores escritos en el código.

El valor está vinculado al nombre de la variable en la que se guarda la llamada a input.*. La etiqueta de la fila se puede cambiar libremente y el valor elegido se conserva. Las filas también se pueden reordenar. Pero si se renombra la variable (length por period), el ajuste volverá al valor del código.

La ventana de ajustes se abre con doble clic en la fila del indicador en la leyenda del gráfico o con el icono de ajustes de esa fila. Además de la pestaña Entradas, contiene Estilo y Visibilidad, de las que se habla más adelante.

Líneas: plot

plot dibuja una serie, un valor por cada vela. Solo el primer argumento (la propia serie) es obligatorio. Los demás parámetros se indican por nombre:

  • title: nombre de la línea en la leyenda y en la ventana de ajustes;
  • color: color, constante o calculado en cada vela;
  • linewidth: grosor;
  • style: modo de renderizado, véase la tabla;
  • offset: desplazamiento de un número determinado de velas: positivo a la derecha, negativo a la izquierda;
  • show_last: dibujar solo las últimas N velas;
  • join = true: unir con una línea los puntos de los estilos circles y cross;
  • editable = false: quitar la línea de la ventana de ajustes;
  • display = display.none: ocultar la línea al añadirla; se puede activar en la pestaña Visibilidad.
Estilo Aspecto
plot.style_line Línea quebrada, estilo por defecto
plot.style_linebr Igual que line
plot.style_stepline Escalones
plot.style_stepline_diamond Escalones con rombos
plot.style_histogram Columnas finas desde cero, con grosor de línea
plot.style_columns Columnas desde cero, con ancho de vela
plot.style_area Área rellena hasta cero
plot.style_areabr Igual que area
plot.style_circles Puntos
plot.style_cross Cruces

La línea siempre se interrumpe donde la serie no tiene valor (na) y no salta el hueco con un segmento recto. Por eso los pares line/linebr y area/areabr se dibujan igual.

Loot
indicator("Стили линий")

d = close - open

plot(d, "Тело свечи", style = plot.style_histogram, color = d >= 0 ? color.teal : color.red)
plot(ta.sma(d, 10), "Средняя 10", style = plot.style_stepline, color = color.orange, linewidth = 2)
plot(ta.sma(d, 30), "Средняя 30", style = plot.style_circles, color = color.gray)

Color por velas

El color puede ser una expresión: en ese caso se calcula de nuevo en cada vela. El color na significa que en esa vela no hay línea:

Loot
indicator("Средняя только над ценой", overlay = true)

m = ta.sma(close, 50)
plot(m, "Средняя", color = close > m ? color.teal : na)

Qué obtiene la línea en la ventana de ajustes

  • En la pestaña Estilo se ajusta el grosor de cada línea. La fila de color aparece solo en las líneas con color constante: si el script elige el color en cada vela, no hay nada que cambiar en la ventana.
  • En la pestaña Visibilidad, cada línea tiene una casilla para mostrarla u ocultarla. Aparece si hay más de una línea o si la línea está oculta mediante display.
  • Una línea con editable = false no recibe filas en ninguna pestaña.

Niveles y rellenos

hline dibuja una línea horizontal a un precio constante, por ejemplo, los límites de las zonas del RSI. El precio debe ser un número o un ajuste input.*: una serie que cambia vela a vela no sirve aquí. Para una línea así se necesita plot. El estilo de la línea se define con hline.style_solid, hline.style_dashed y hline.style_dotted.

fill rellena el área entre dos fronteras. Para obtener una frontera, el resultado de hline o plot se guarda en una variable:

Loot
indicator("RSI с зонами")

length = input.int(14, "Период", minval = 1)
r = ta.rsi(close, length)

top    = hline(70, "Перекупленность", color = color.gray, linestyle = hline.style_dashed)
bottom = hline(30, "Перепроданность", color = color.gray, linestyle = hline.style_dashed)
fill(top, bottom, color = color.new(color.purple, 30), title = "Зона")

plot(r, "RSI", color = r > 70 ? color.red : r < 30 ? color.teal : color.purple)

Las dos fronteras deben ser del mismo tipo: dos niveles hline o dos líneas plot. El compilador no acepta un relleno entre una línea y un nivel.

El color de relleno entre dos líneas puede cambiar vela a vela. Así se obtiene una «nube» a partir de dos medias móviles:

Loot
indicator("Облако", overlay = true)

fast = ta.ema(close, 9)
slow = ta.ema(close, 21)

pf = plot(fast, "Быстрая", color = color.teal)
ps = plot(slow, "Медленная", color = color.orange)
fill(pf, ps, color = fast > slow ? color.new(color.teal, 50) : color.new(color.red, 50), title = "Облако")

También hay relleno con degradado. Defina top_value y bottom_value para indicar las alturas donde el color es igual a top_color y bottom_color; entre ellas, el color transita suavemente. Esas alturas deben ser números constantes. Si se necesita un relleno hasta un nivel constante, conviértalo en una línea: plot(50). Pero recuerde que cuenta como una de las tres líneas dibujables.

Loot
indicator("RSI с градиентом")

r  = ta.rsi(close, 14)
pr = plot(r, "RSI", color = color.purple)
pm = plot(50, "Середина", color = color.gray)
fill(pr, pm, top_value = 80, bottom_value = 50,
     top_color = color.new(color.teal, 160), bottom_color = color.new(color.teal, 0))

Fondo y color de velas

bgcolor pinta el fondo debajo de la vela; barcolor cambia el color de la propia vela. Ambos aceptan un color calculado en cada vela; en las velas con color na no cambia nada.

Loot
indicator("Подсветка объёма", overlay = true)

avgVol = ta.sma(volume, 20)
spike  = volume > avgVol * 2

bgcolor(spike ? color.new(color.orange, 40) : na, title = "Всплеск объёма")
barcolor(close > open ? color.teal : color.red, title = "Цвет свечей")

Marcadores: plotshape y plotchar

plotshape coloca un icono en las velas donde la condición es verdadera. plotchar hace lo mismo con cualquier símbolo.

Loot
indicator("Пересечения", overlay = true)

fast = ta.ema(close, 9)
slow = ta.ema(close, 21)

plotshape(ta.crossover(fast, slow), "Вверх", style = shape.triangleup,
          location = location.belowbar, color = color.teal, size = size.small)
plotshape(ta.crossunder(fast, slow), "Вниз", style = shape.triangledown,
          location = location.abovebar, color = color.red, size = size.small)
plotchar(volume > ta.sma(volume, 20) * 3, "Объём", char = "●", location = location.top, color = color.orange)
  • Forma, shape.*: triangleup, triangledown, arrowup, arrowdown, circle, square, diamond, cross, xcross, flag, labelup, labeldown.
  • Ubicación, location.*: abovebar — encima de la vela, belowbar — debajo de la vela, top y bottom — en los bordes superior e inferior del panel. En un panel separado debajo del gráfico, «encima de la vela» y «debajo de la vela» también significan el borde superior y el inferior: ese panel tiene su propia escala y los precios de las velas no están marcados en ella.
  • Tamaño, size.*: auto, tiny, small, normal, large, huge.
  • text añade una etiqueta corta al icono. Cuando el gráfico está muy alejado y las velas son estrechas, las etiquetas se ocultan y los iconos permanecen.

Objetos gráficos

Además de las series, el script puede dibujar objetos individuales: etiquetas label.new, segmentos line.new, rectángulos box.new y tablas table.new. Cada llamada a *.new devuelve un objeto. Se puede mover con las funciones set_* (label.set_xy, line.set_x2, box.set_top, etc.), leer con get_*, copiar con copy o eliminar con delete.

En horizontal, el objeto está vinculado por defecto al número de vela, bar_index. Con el parámetro xloc = xloc.bar_time, la coordenada se define por el tiempo de la vela. El parámetro extend (extend.right, extend.left, extend.both) prolonga el borde de un segmento o rectángulo hasta el límite del gráfico.

El objeto permanece en el gráfico hasta que se elimina. El script se ejecuta en cada vela, por lo que label.new sin condición creará una etiqueta por cada vela. Para mantener un solo objeto y moverlo, guárdelo en una variable var y elimine el anterior:

Loot
indicator("Последний пивот", overlay = true, maxLabelsCount = 50)

ph = ta.pivothigh(high, 10, 10)

var line level = na
if not na(ph) {
    label.new(bar_index - 10, ph, str.tostring(ph), style = label.style_label_down,
              color = color.orange, textcolor = color.white, size = size.small)
    line.delete(level)
    level := line.new(bar_index - 10, ph, bar_index, ph, extend = extend.right,
                      color = color.orange, style = line.style_dashed)
}

El script etiqueta cada máximo encontrado y traza una línea punteada desde el último hacia la derecha. Al mismo tiempo elimina la línea punteada anterior.

No puede haber más de 500 objetos vivos de cada tipo a la vez. Cuando aparece el número 501, el más antiguo desaparece. Los parámetros maxLinesCount, maxLabelsCount y maxBoxesCount en indicator() reducen este límite. Un valor mayor que 500 se recorta a 500.

Tablas

La tabla no está vinculada a las velas, sino a una esquina o borde del panel, y no se mueve al desplazar el gráfico. La posición se define con position.*: top_left, top_center, top_right, middle_left, middle_center, middle_right, bottom_left, bottom_center, bottom_right. Las celdas se rellenan con table.cell. Conviene hacerlo solo en la última vela, para no reescribir la tabla en todo el historial:

Loot
indicator("Сводка", overlay = true)

var t = table.new(position.top_right, 2, 2, bgcolor = color.new(color.black, 160))
if barstate.islast {
    table.cell(t, 0, 0, "RSI", text_color = color.white)
    table.cell(t, 1, 0, str.tostring(math.round(ta.rsi(close, 14), 1)), text_color = color.white)
    table.cell(t, 0, 1, "ATR", text_color = color.white)
    table.cell(t, 1, 1, str.tostring(math.round(ta.atr(14), 2)), text_color = color.white)
}

Una tabla no puede tener más de 200 columnas ni 200 filas. No se crea una tabla con más de 2000 celdas.

Colores

Colores con nombre: color.red, color.green, color.blue, color.teal, color.orange, color.purple, color.yellow, color.white, color.black, color.gray, color.silver, color.maroon, color.navy, color.olive, color.lime, color.aqua, color.fuchsia.

El color también se puede escribir con código: #FF8800 es opaco, #FF880040 tiene transparencia. El último par de dígitos define la opacidad: 00 es completamente transparente, FF es sólido.

  • color.rgb(r, g, b) compone un color a partir de componentes de 0 a 255. El cuarto argumento es la opacidad; por defecto, 255.
  • color.from_gradient(value, bottomValue, topValue, bottomColor, topColor) devuelve un color intermedio entre los dos extremos según la posición de value en el rango. Es útil para colorear un oscilador de frío a caliente.
  • na en lugar de un color significa «no dibujar».
Loot
indicator("RSI в цвете")

r = ta.rsi(close, 14)
heat = color.from_gradient(r, 30, 70, color.rgb(0, 150, 136), color.rgb(244, 67, 54))

plot(r, "RSI", color = heat, linewidth = 2)
bgcolor(r > 70 ? color.new(color.red, 30) : r < 30 ? color.new(color.teal, 30) : na, title = "Зоны")

Siguiente

FAQ

¿Por qué la cuarta línea de mi script no se ve en el gráfico?
El panel dibuja solo las primeras tres llamadas a plot en el orden del texto. Las demás se compilan, pero no aparecen en el gráfico. Los marcadores, el fondo, los niveles y los objetos gráficos no entran en ese límite.
¿Cómo hacer que un color sea semitransparente?
Usando color.new(color, alpha), donde alpha va de 0 (color invisible) a 255 (opaco). Para el fondo y los rellenos se recomiendan valores 30–60. En el código de color #RRGGBBAA, el par final de dígitos indica la opacidad.
¿Por qué después de editar el script la configuración volvió al valor por defecto?
El valor seleccionado está ligado al nombre de la variable donde se guarda la llamada input.*. Si renombras la variable, la vinculación se pierde. Puedes cambiar la etiqueta de la fila y el orden de las configuraciones.
¿Por qué fill no rellena el área entre una línea y un nivel?
Ambos límites del relleno deben ser del mismo tipo: dos líneas plot o dos niveles hline. Puedes dibujar un nivel constante con plot(50), pero eso ocupará una de las tres líneas dibujadas.