Primeros pasos

Escribe y despliega tu primer indicador personalizado

Crea tu primer indicador

Abre el Editor de indicadores — Agrega un widget Editor de indicadores a tu espacio de trabajo, o ve a la lista de Indicadores y haz clic en "Nuevo indicador"

Escribe tu código — Comienza con la declaración indicator(), define entradas, calcula valores y traza resultados

Previsualiza en el gráfico — El widget Gráfico de datos representa la salida de tu indicador en tiempo real mientras editas

Guarda y despliega — Ponle nombre a tu indicador y guárdalo en tu espacio de trabajo para usarlo en gráficos y flujos de trabajo

Ejemplo mínimo

Todo indicador comienza con una llamada a indicator() y al menos un plot():

indicator('Simple Moving Average', { overlay: true });

const length = input.int(20, 'Length');
const sma = ta.sma(close, length);

plot(sma, 'SMA', { color: '#2962FF' });

Esto crea un indicador con:

  • Un parámetro configurable Length (valor predeterminado 20) que aparece en la interfaz
  • Una media móvil simple calculada sobre los precios de cierre
  • Una línea azul trazada como superposición en el gráfico de precios

Opciones del indicador

La función indicator() acepta un título y un objeto de opciones:

indicator('My Indicator', {
  overlay: true,        // Plot on price chart (false = separate pane)
  precision: 2,         // Decimal places for values
  format: format.price, // Display format
});
OpciónTipoValor predeterminadoDescripción
overlaybooleanfalseTraza en el gráfico de precios en lugar de un panel separado
precisionnumberautoNúmero de decimales
formatstringformat.inheritFormato de visualización (format.price, format.volume, format.percent)
scalestringautoTipo de escala
max_bars_backnumberautoNúmero máximo de barras históricas de referencia
max_lines_countnumberautoMáximo de objetos de dibujo de líneas
max_labels_countnumberautoMáximo de objetos de dibujo de etiquetas
max_boxes_countnumberautoMáximo de objetos de dibujo de cajas

Un ejemplo más completo

Aquí tienes un indicador de Bandas de Bollinger que muestra entradas, desestructuración de tuplas, múltiples trazados y relleno:

indicator('Bollinger Bands', { overlay: true });

const length = input.int(20, 'Length');
const mult = input.float(2, 'StdDev');

// ta.bb returns [middle, upper, lower] as a tuple
const [middle, upper, lower] = ta.bb(close, length, mult);

const upperPlot = plot(upper, 'Upper', { color: '#F23645' });
plot(middle, 'Middle', { color: '#2962FF' });
const lowerPlot = plot(lower, 'Lower', { color: '#089981' });

// Fill the area between upper and lower bands
fill(upperPlot, lowerPlot);

Agregar un disparador de flujo de trabajo

La función trigger() es una extensión de TradingGoose que conecta las señales de los indicadores con la automatización de flujos de trabajo:

indicator('MACD Crossover Signal');

const [macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9);

plot(hist, 'Histogram', { style: plot.style_histogram });
plot(macdLine, 'MACD');
plot(signalLine, 'Signal');

// Fire a workflow when MACD crosses above signal line
if (ta.crossover(macdLine, signalLine)) {
  trigger('macd_bullish_cross', {
    condition: ta.crossover(macdLine, signalLine),
    input: 'MACD bullish crossover detected',
    signal: 'long',
    position: 'belowBar',
    color: '#00FF00'
  });
}

La API trigger() es exclusiva de TradingGoose y no existe en Pine Script estándar. Consulta la guía de Triggers para ver la documentación completa.

Próximos pasos