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.
Los tres mecanismos de alerta, en un minuto.
ALCANCE, QUIÉN CONTROLA EL MENSAJE Y CUÁNDO USAR CADA UNO.
El mensaje se escribe en el diálogo al crear la alerta; el script no puede cambiarlo después.
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.
Adjuntas un mensaje a cada strategy.entry() / strategy.exit() y lo referencias en el diálogo con el placeholder {{strategy.order.alert_message}}.
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:
//@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.tickerHace que el mismo script funcione en cualquier gráfico sin editar el mensaje.
alert.freq_once_per_bar_closeDispara 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.
//@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:
{{strategy.order.alert_message}}
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.
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.
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.
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.
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 solucionesEl 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?
+
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?
+
{"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.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.