Pine v6 listo para producción sin escribir el script a mano

Builder → Code Generator → pegar en Pine Editor. Qué significa listo (Tester + costes), los límites del builder y contexto académico sobre reglas tras costes.

📖 10 min de lectura

📝 1,925 palabras

🏷️ Pine Script y TradingView

Compartir este artículo:

Qué puede significar «listo para producción»

La frase se usa constantemente y casi nunca se define, lo que la vuelve infalsable. Esta es una definición lo bastante estrecha para comprobarse.

Una estrategia Pine lista para producción es aquella en la que el archivo hace lo que pretendías y el backtest mide algo posible. Eso es todo. Es una propiedad del artefacto, no un pronóstico sobre el mercado.

Las cuatro afirmaciones que sí hace

AfirmaciónCómo la compruebas
es una estrategia, no un indicadorla segunda línea dice strategy(
los costes están declarados y son realistascommission_value, commission_type, slippage están fijados [1]
cada control afecta al comportamientomueve cada input y confirma que cambia el número de operaciones
las ejecuciones eran posiblestres operaciones comprobadas contra el rango máximo-mínimo del gráfico

Un archivo que pasa las cuatro es uno sobre el que puedes razonar. Un archivo que falla cualquiera produce cifras que no describen nada, y ningún análisis posterior lo recupera.

Las cuatro afirmaciones que explícitamente no hace

Esta es la parte que vuelve utilizable el término:

No afirma que la estrategia sea rentable. Una implementación limpia de una mala idea sigue siendo una mala idea, correctamente implementada.

No afirma que el resultado se repita. Una estrategia sobreajustada pasa todas las comprobaciones anteriores: el código está limpio, los costes son honestos, las ejecuciones son reales, y los parámetros resultan ser los que convenían a ese tramo de historial. Ese fallo no deja ningún rastro en el archivo.

No afirma que la estrategia vaya a operar sola. Una estrategia de Pine lanza alertas; una alerta es una notificación, no una orden, y las alertas solo se disparan en la barra en tiempo real. Pasar de alerta a ejecución requiere una integración con el bróker que no forma parte del archivo.

No afirma que el backtest sea reproducible por otra persona. Cuánto historial probaste depende de tu plan de cuenta de TradingView [4], y tus valores de entrada viven con el gráfico y no en el archivo. Dos personas con el mismo archivo pueden obtener informes distintos con toda legitimidad.

Por qué la definición estrecha es más útil

Porque es alcanzable y comprobable en unos cinco minutos, y porque separa dos preguntas que se confunden constantemente:

  • ¿Es correcto este archivo? — se responde hoy, por inspección
  • ¿Es buena esta estrategia? — solo se responde con evidencia fuera de muestra, y nunca con certeza

Casi toda la decepción en este campo viene de tratar un sí a la primera como un sí a la segunda. Las comprobaciones de la siguiente sección son todas para la primera pregunta, que es la única en la que una herramienta puede ayudar.


Migrar una estrategia de v5 a v6

Una estrategia v5 que escribiste o heredaste es el caso más claro de un archivo que puede fallar la definición anterior pareciendo terminado. Algunos cambios de v6 detienen el script y cuestan diez minutos. Otros dejan que compile y se ejecute y cambian lo que devuelve, y cuestan un backtest en el que crees. Todos están en la guía de migración de TradingView [6]; aquí se agrupan por consecuencia, y la superficie completa del lenguaje está en la referencia de v6 [3].

Los cambios que se ejecutan y devuelven otras cifras

Qué cambió [6]v5v6Consecuencia
Evaluación de and / orambos lados siemprecortocircuitouna llamada a un indicador tras una condición falsa se omite, corrompiendo su historial
margin_long / margin_short por defecto0 — sin control de margen100 — control estrictollamadas de margen donde no había
strategy.exit() con niveles relativos y absolutosganaba el absolutoel que se active antesprofit = 0, limit = price ahora sale en la entrada
Órdenes más allá de 9.000error de ejecución, se deteníase recortan las más antiguas en silenciolas recortadas devuelven na en strategy.closedtrades.*
timeframe.period en gráfico diario"D""1D"timeframe.period == "D" ahora siempre es falso
5 / 2 con dos const int22.5umbrales y periodos se desplazan
Un bool referenciado antes de existirnafalsela lógica de la primera barra toma la otra rama
for i = 0 to exprexpr una sola vezreevaluado en cada iteraciónun bucle con límite mutable puede no terminar
array.get(-1)error de ejecucióndevuelve el último elementoun desajuste de índice que antes gritaba ahora devuelve un valor erróneo verosímil

La evaluación perezosa es la peor, porque corrompe el estado interno de un indicador y el daño es invisible en el código. En v5 un indicador dentro de una condición se llamaba en cada barra; en v6 la llamada se omite en las barras donde la primera condición es falsa [6]:

pine
// v6: ta.rsi() se omite cuando close <= open
if close > open and ta.rsi(close, 14) > 50
    signal := true

// la solución: llamarlo en ámbito global, donde se ejecuta en cada barra
rsiVal = ta.rsi(close, 14)
if close > open and rsiVal > 50
    signal := true

Revisa cada script convertido que llame a una función ta.* dentro de un if, un switch o el lado derecho de un and. Nada te avisa, y el backtest sigue produciendo una curva.

El margen por defecto afecta a las estrategias apalancadas. Una estrategia v5 sobreapalancada en silencio ahora se cierra por llamadas de margen [6]. Poner margin_long = 0, margin_short = 0 recupera el comportamiento antiguo, pero es una decisión sobre realismo, no un arreglo: una estrategia que solo funcionaba sin control de margen nunca iba a sobrevivir en real.

Los cambios que detecta el compilador

Cuestan tiempo y no dinero, y todos tienen un arreglo mecánico [6]:

  • when se eliminó de strategy.entry() y de las demás llamadas de órdenes. Era la forma estándar de v5 de colocar una orden condicional, así que gran parte de las estrategias v5 publicadas necesitan la reescritura con if cond.
  • Los números ya no se convierten a bool: if algúnNúmero pasa a ser if algúnNúmero != 0, y un bool ya no puede ser na.
  • Una variable mutada es series, y funciones como ta.ema() solo aceptan simple en su longitud. Nunca fue correcto — una longitud que cambia barra a barra no tiene un historial consistente — así que v6 rechaza algo que estaba mal en silencio.
  • Eliminaciones menores: sin historial [] en literales ni constantes, transp sustituido por color.new(), sin parámetros repetidos, linewidth de al menos 1. Las constantes de color también cambiaron de valor (color.red ahora es #F23645), lo que sorprende a quien compara capturas.

Usa el conversor, y revisa tú la lista silenciosa

El propio conversor del Pine Editor gestiona la mayoría de los cambios mecánicos [6], así que úsalo antes de migrar nada a mano. Sus límites documentados [6]: un script que no compila limpiamente como v5 no puede convertirse automáticamente; en casos raros sigue haciendo falta un arreglo manual; y las llamadas request.*() ahora son dinámicas por defecto, así que las peticiones anidadas pueden comportarse distinto y recuperar el comportamiento de v5 puede exigir dynamic_requests = false.

El conversor reescribe sintaxis. No sabe que tu ta.rsi() dentro de un and ya no se ejecuta en cada barra, ni que tu estrategia ahora aplica margen: después de convertir, la tabla anterior sigue siendo tu trabajo.

Una estrategia construida en el builder no tiene nada que migrar: se guarda como documento de estrategia, y volver a exportar escribe el archivo de nuevo en Pine Script v6. El código generado no usa indicadores integrados de la plataforma: cada indicador está escrito en el archivo que descargas, así que puedes leerlo.


La evidencia que debes tener antes de arriesgar dinero

La sección anterior trata de si el archivo es correcto. Esta trata de si tienes motivos para ejecutarlo. Pregunta distinta, pruebas distintas, y ninguna herramienta puede hacerlas por ti.

Cinco cosas que o tienes o no tienes

EvidenciaPor qué es la que importa
un resultado en un rango de fechas que no ajustastela única prueba de si encontraste una ventaja o ajustaste una muestra
un resultado en un segundo instrumentouna estrategia que funciona en un símbolo puede ser una descripción de ese símbolo
más de cien operacionespor debajo, las estadísticas describen un puñado de sucesos
el resultado con tamaño de posición fijoel porcentaje de capital compone y favorece a una ventaja débil [1]
el número de variaciones que probastela mejor de diez es una estimación sesgada, y el recuento va con el resultado

La última fila es la que nadie anota y la que más cambia la interpretación. Si probaste diez conjuntos de parámetros y te quedaste con el mejor, ese mejor resultado está sesgado al alza por la propia búsqueda — el razonamiento, con la literatura, está en probar variaciones con honestidad.

La prueba de sensibilidad a costes

Una medición, que casi nadie hace, y que te dice más que otro mes de backtesting: duplica tu comisión y tu slippage, y vuelve a ejecutar.

Qué ocurreQué significa
la ventaja sobrevivelos costes no están sosteniendo el resultado
la ventaja se reduce a la mitadestás cerca del margen; pequeñas diferencias de ejecución decidirán el resultado
la ventaja desaparecela estrategia era un error de redondeo sobre los costes de transacción

El tercer caso es común y conviene descubrirlo antes de operar en real, no después. La evidencia académica revisada sobre reglas técnicas se debilita mucho una vez incluidos los costes de transacción [5], así que una estrategia sensible a costes es el caso esperado, no el sorprendente.

Qué anotar

No la curva de capital. Esto:

Instrumento, temporalidad, rango de fechas, plan de cuenta, tamaño de posición, los valores de entrada usados, el número de operaciones, el drawdown máximo, y cuántas variaciones se probaron antes de esta.

Diez líneas. Hacen que el resultado sea reproducible por ti en seis meses y comprobable por cualquier otro — y su ausencia es la razón por la que casi ningún backtest publicado puede verificarse. Si citas una cifra sin el plan y el recuento de variaciones, has publicado algo que nadie puede comprobar, tú incluido.

El último paso honesto

Papel primero, y durante suficiente tiempo para ver a la estrategia equivocarse. Una estrategia a la que solo has visto ganar no te ha mostrado lo que decide si seguirás ejecutándola: qué aspecto tiene durante el drawdown. La cifra de drawdown máximo del tester es un número; vivirlo es otra experiencia, y es la razón por la que las estrategias se abandonan en el peor momento posible.

Preguntas frecuentes

Sí para estrategias basadas en reglas. Demo (a mano o con Tactix Studio) → Code Generator → Pine Editor. Oficial: Strategies [1].

Es strategy() v6 estructurado. Debes Properties, Strategy Tester, paper y tamaño prudente. Sin promesa de rentabilidad.

No. Autoreas reglas en el builder. Por qué Pine es difícil.

MT5: EA sin código. Pine: First steps [2].

Riesgo Pine. strategy() [3].

No. Reexporta. Lección: EAs gratis.

Tactix Studio rellena el formulario del builder (campos que revisas). El Generador de código escribe Pine desde ese JSON — el LLM no emite el .pine. Los chatbots que pegan strategy() sin probar saltan esa revisión. Features.

Usa primero el conversor del Pine Editor y después revisa los cambios que compilan y aun así alteran los resultados: la evaluación perezosa de and/or, el valor por defecto 100 de margin_long/margin_short y strategy.exit() con niveles relativos y absolutos. Guía oficial de migración [6].

No. El código generado no usa indicadores integrados de la plataforma: cada indicador está escrito en el archivo que descargas, así que puedes leerlo. Superficie completa del lenguaje: la referencia de v6 [3].

Referencias

  1. TradingView. Strategies. https://www.tradingview.com/pine-script-docs/concepts/strategies
  2. TradingView. First steps. https://www.tradingview.com/pine-script-docs/primer/first-steps
  3. TradingView. Pine Script® language reference manual. https://www.tradingview.com/pine-script-reference/v6/
  4. TradingView. Limitations. https://www.tradingview.com/pine-script-docs/writing/limitations
  5. Park, C.-H., & Irwin, S. H. (2007), Journal of Economic Surveys. What do we know about the profitability of technical analysis?. https://doi.org/10.1111/j.1467-6419.2007.00519.x
  6. TradingView. Migration guide — to Pine Script® version 6. https://www.tradingview.com/pine-script-docs/migration-guides/to-pine-version-6