Little Bird Trading

Preguntas frecuentes sobre Pine Script: backtests y alertas

4 min de lectura · Actualizado

Estas son unas preguntas frecuentes en lenguaje llano sobre las dos dudas de Pine que desconciertan a casi todos en TradingView: por qué el backtest de una estrategia se ve mejor de lo que se siente el trading real, y por qué una alerta a veces salta en un momento o a un precio distinto del que esperabas. Ambas vienen de la misma causa, un desajuste entre los datos que había disponibles cuando se tomó una decisión y lo que ven tus ojos después de que las barras hayan cerrado.

¿Cuál es la diferencia entre un indicador, una estrategia y una alerta?

Un indicador (indicator()) solo dibuja y calcula: traza líneas, colores y etiquetas. Una estrategia (strategy()) simula órdenes: llama a strategy.entry/strategy.exit, las ejecuta contra barras históricas y produce el informe del Strategy Tester con beneficio neto, drawdown y porcentaje de acierto. Una alerta es una capa de notificación aparte que TradingView dispara cuando se cumple una condición; no opera nada por sí sola. La confusión empieza cuando se lee un backtest como una promesa, o se espera que una alerta sea un fill: son tres trabajos distintos. Para ver la diferencia en profundidad, consulta la guía de indicador frente a estrategia.

¿Por qué mi backtest se ve genial pero los resultados reales no coinciden?

Cuatro cosas inflan un backtest respecto a la realidad, y todas tienen arreglo:

  • Supuestos de cierre de barra frente a intrabarra. Por defecto el Strategy Tester evalúa la lógica al cierre de la barra. Si tu condición usa el máximo, el mínimo o el cierre de la barra actual de una forma que solo se conocería después de completarse la barra, el fill histórico usa información que la operación real no habría tenido.
  • Fills por defecto a precios poco realistas. Una orden a mercado en el tester se ejecuta en la apertura de la barra siguiente; en una apertura rápida ese precio puede estar a varios ticks o puntos en real.
  • Sin comisión ni deslizamiento modelados. Si dejas commission_value y slippage en cero en strategy(), cada operación simulada está libre de fricción. Añade valores realistas; incluso una fracción de tick de deslizamiento vuelve negativos muchos sistemas de scalping "rentables". (La comisión se fija mediante commission_type y commission_value.)
  • Muestras minúsculas. Doce operaciones que salieron bien son una muestra demasiado pequeña para hablar de ventaja. Consulta cómo detectar sistemas de trading sobreajustados antes de fiarte de cualquier curva.

Ejemplo práctico: un sistema que muestra +4200 US$ en 40 operaciones de ES con costes cero se ve muy distinto cuando añades una comisión de ida y vuelta de 2,50 US$ y un tick de deslizamiento por cada lado, entrada y salida. Un tick en ES es 0.25 punto = 12,50 US$, así que dos ticks son 25,00 US$; suma la comisión de 2,50 US$ y obtienes 27,50 US$ de fricción por operación. En 40 operaciones son unos 1100 US$, lo que convierte un +4200 US$ de titular en más o menos +3100 US$, y peor si las entradas se agrupan en aperturas volátiles donde el deslizamiento real es mayor que un solo tick.

¿Qué es el repainting, y significa que el script está roto?

No necesariamente. "Repainting" es un término general para un script que muestra valores distintos en las barras históricas de los que produjo en tiempo real. La prueba honesta es sencilla: ¿se podría haber tomado la decisión con la misma información, en el mismo momento, en vivo? Una señal que solo se confirma después del cierre de la barra está haciendo su trabajo: espera al cierre antes de confirmar. El problema viene de los scripts que trazan una señal en la barra en formación y luego la mueven cuando la barra termina, o que traen datos de un marco temporal superior con lookahead activado. Si quieres una señal sobre la que puedas actuar, evalúala con barstate.isconfirmed (cierre de barra), que reacciona solo a la barra completada.

¿Por qué mi alerta saltó tarde, a otro precio o dos veces?

  • "Una vez por cierre de barra" frente a "Una vez por barra". Una alerta configurada para saltar en la barra en formación puede dispararse en el instante en que una condición parpadea a verdadera dentro de la barra, y luego la barra cierra en otro sitio y parece "equivocada". Saltar al cierre de barra es más tarde, pero coincide con el momento en que una estrategia confirmada toma realmente su decisión (la estrategia actúa entonces en la apertura de la barra siguiente).
  • El precio de la alerta es una instantánea del momento en que saltó la alerta. Tu bróker te ejecuta al precio de mercado en vivo, que se mueve en los milisegundos entre la alerta y tu orden.
  • Los disparos duplicados suelen significar que la condición se mantuvo verdadera durante varios ticks y la alerta estaba configurada para saltar en cada tick cuando debería saltar una vez por barra.

¿Cómo se conecta esto con el método de los Planes de trading?

Los Planes de trading esquivan todo el problema de "¿repintó mi señal?" dándote niveles fijos y planificados de antemano. Los niveles diarios, dibujados en ES, SPY, NQ y QQQ antes de la apertura, se calculan después del cierre anterior y no se mueven durante la sesión, así que no hay nada que repintar: cada nivel se fija antes de las 9:30 ET y se queda quieto. MyLinedChart solo dibuja esos niveles; nunca simula órdenes, así que no arrastra ninguno de los supuestos de fill de backtest de arriba. Si un nivel publicado discrepa de tu propia alerta o estrategia, trátalo como información, y a menudo la respuesta es esperar. Para el vocabulario, consulta el glosario de los Planes de trading.

Lista de comprobación práctica antes de fiarte de cualquier resultado de Pine

  • Confirma la lógica con barstate.isconfirmed para que el backtest y el real compartan el mismo momento de decisión.
  • Fija una comisión y un deslizamiento realistas, commission_type, commission_value y slippage en strategy(), para el instrumento que realmente operas.
  • Elige la frecuencia de las alertas de forma deliberada: cierre de barra para confirmar, una vez por barra para evitar duplicados.
  • Juzga los resultados con suficientes operaciones para que cuenten.
  • Mantén las superposiciones de contexto (como los niveles publicados) separadas de la autoridad de ejecución: el gráfico informa la decisión; la toman tus reglas escritas.

Lecturas relacionadas

Fuentes

Solo contenido educativo. No es asesoramiento de inversión.

Solo contenido educativo. No es asesoramiento de inversión.