TUTORIAL · PINE SCRIPT · JULIO 2026

alert() de Pine Script para webhooks, bien hecho.

TradingView te da tres maneras distintas de disparar una alerta desde código — y elegir mal es la razón de que tantos setups de webhook muestren popups en pantalla pero nunca muevan una orden. Esta guía ordena alertcondition() vs alert() vs alert_message, enseña payloads copiables para cada una y lista los cuatro fallos que rompen la automatización en silencio.

BBenjamin SF · Fundador Publicado 20 jul 2026 Lectura 8 min Pine v6

Los tres mecanismos de alerta, en un minuto.

ALCANCE, QUIÉN CONTROLA EL MENSAJE Y CUÁNDO USAR CADA UNO.

alertcondition()
SOLO INDICADORES

El mensaje se escribe en el diálogo al crear la alerta; el script no puede cambiarlo después.

Vale para payloads estáticos
alert()
INDICADORES + ESTRATEGIAS

El mensaje se construye en código en tiempo real, así que puede llevar valores vivos (precio, ticker, lote calculado). Crea la alerta con la condición Any alert() function call.

La más flexible · empieza aquí
alert_message
SOLO ESTRATEGIAS

Adjuntas un mensaje a cada strategy.entry() / strategy.exit() y lo referencias en el diálogo con el placeholder {{strategy.order.alert_message}}.

Una alerta cubre todas las órdenes

RECETA 01

alert(): JSON dinámico desde un indicador o estrategia.

Es la vía más flexible. Construye el JSON exacto que espera tu puente — el payload de abajo es el formato documentado de SignalForge (referencia completa), pero la técnica es idéntica para cualquier receptor de webhooks:

indicador con payload dinámicoPINE v6
//@version=6
indicator("Demo alertas webhook", overlay = true)

cruceAlcista = ta.crossover(ta.ema(close, 9), ta.ema(close, 21))

if cruceAlcista
    alert('{"action":"buy","symbol":"' + syminfo.ticker + '","lot":0.01,"sl":50,"tp":100}',
          alert.freq_once_per_bar_close)
syminfo.ticker

Hace que el mismo script funcione en cualquier gráfico sin editar el mensaje.

alert.freq_once_per_bar_close

Dispara solo en velas confirmadas — la bandera más importante de toda esta guía (ver fallos).

RECETA 02

alert_message: una alerta para toda la estrategia.

estrategia con mensaje por ordenPINE v6
//@version=6
strategy("Demo estrategia webhook", overlay = true)

condLarga = ta.crossover(ta.ema(close, 9), ta.ema(close, 21))

if condLarga
    strategy.entry("L", strategy.long,
         alert_message = '{"action":"buy","symbol":"' + syminfo.ticker + '","lot":0.01}')

strategy.exit("XL", "L", loss = 500, profit = 1000,
     alert_message = '{"action":"close","symbol":"' + syminfo.ticker + '"}')

Después crea UNA alerta sobre la estrategia, elige Order fills events y pon exactamente esto en la caja de mensaje:

diálogo de alerta → caja de mensajePLACEHOLDER
{{strategy.order.alert_message}}
O constrúyelo en el diálogo

Cada fill envía ahora su payload adjunto. Si prefieres construir el mensaje en el diálogo, los placeholders genéricos también funcionan: {{ticker}}, {{close}}, {{strategy.order.action}}, {{strategy.order.contracts}}. Y si quieres que esta estrategia solo dispare a favor de la tendencia, añade un filtro sobre condLarga — mira nuestra guía de filtro de tendencia para TradingView (EMA 200, Supertrend, ADX).

DEPURACIÓN

Los cuatro fallos que matan en silencio la automatización.

01

Disparar intrabar (cebo de repintado)

Con alert.freq_once_per_bar o condiciones en tiempo real, la alerta puede saltar con una señal que desaparece al cerrar la vela: el backtest no se parece en nada a los fills reales.

SOLUCIÓN → usa alert.freq_once_per_bar_close salvo motivo concreto
02

JSON roto por concatenación

Una comilla que falta alrededor de un valor concatenado — "lot":' + str.tostring(lote) + ' vs "lot":"' + ... + '" — y el receptor descarta el mensaje. Los números van sin comillas, los strings con comillas, y un valor na convierte el payload en basura a mitad de cadena.

SOLUCIÓN → pega la salida exacta en nuestro tester de webhooks gratuito y mira qué parsearía un puente antes de ir en real
03

El diálogo de la alerta no está cableado

La URL del webhook vive en la pestaña Notificaciones de la alerta y hay que re-guardarla cada vez que la editas. Y una llamada a alert() solo llega al mundo exterior si la alerta se creó con Any alert() function call.

SOLUCIÓN → un popup en pantalla no demuestra nada del webhook
04

Plan gratuito de TradingView

Las notificaciones por webhook necesitan plan de pago (Essential en adelante). Si la casilla está en gris, esa es la respuesta.

SOLUCIÓN → más modos de fallo silencioso en la guía de las 12 soluciones
¿No quieres escribir Pine en absoluto?

El AI Script Builder convierte una descripción en lenguaje normal en una estrategia Pine Script v6 completa y validada con el payload del webhook ya cableado para MT5 — 100 estrategias/mes en el plan Starter de $4,99. Describe, pega, automatiza.

FAQ

Preguntas frecuentes.

Escribe a support@signalforge-ai.com si la tuya no está.

¿Diferencia entre alert() y alertcondition()?

+
alertcondition() registra una condición cuyo mensaje queda fijado en el diálogo; alert() envía un mensaje construido en código en tiempo real. Para payloads dinámicos (precios vivos, tickers, tamaños calculados) quieres alert() o alert_message.

¿Una sola alerta puede cubrir todas las órdenes de mi estrategia?

+
Sí: adjunta alert_message a cada entrada/salida y crea una única alerta en Order fills events con {{strategy.order.alert_message}} como mensaje.

¿Qué formato de payload necesita el puente?

+
SignalForge parsea JSON ({"action":"buy","symbol":"EURUSD","lot":0.01}), key=value y mensajes estilo PineConnector. Quince payloads listos por caso de uso en la biblioteca de payloads JSON.
B
Benjamin SF · Fundador de SignalForge
TRADER · ALICANTE 🇪🇸

Benjamin SF es el fundador de SignalForge y experto en automatización de algoritmos de trading. Construye y opera el puente SignalForge para traders de prop firms y mantiene su benchmark público de latencia (187 ms de mediana).

Automatiza tus señales de TradingView en MT5

SignalForge enruta tus alertas a MetaTrader 5 en milisegundos. 14 días gratis, sin tarjeta.

SignalForge AI es una herramienta de ejecución de órdenes. No ofrecemos asesoramiento de inversión. Operar conlleva riesgo de pérdida.

Prueba tu payload antes de ir en real — tester de webhooks gratis · sin registroAbrir tester →