Presiona ESC para cerrar

Errores de ChatGPT en Pine Script: Corrige tu Código TradingView

Todos los días en los chats locales de algotrading aparece un nuevo «santalgrial». La historia es siempre la misma: alguien le pide a ChatGPT que le arme un indicador o un bot listo para usar, la IA escupe un par de cientos de líneas de código, TradingView muestra un 800% anual fantástico con un drawdown mínimo, y cuando intentas echar a andar esa maravilla en una cuenta real, la guita se evapora en tres sesiones de trading. O todavía más fácil: el código se niega por completo a compilar porque la terminal chilla por variables que jamás han existido en este planeta.

Si alguna vez intentaste automatizar tu estrategia con redes neuronales, seguro que te topaste con este paredón. Olvidémonos de la teoría de manual y veamos sin vueltas por qué los modelos de lenguaje se la pasan inventando sintaxis inexistente, cómo cazar esas alucinaciones y cómo forzar a la IA a tirar código que sirva de verdad en lugar de espejitos de colores.

Falla arquitectónica: por qué la IA inventa Pine Script

ChatGPT no compila código. No entiende de matemática, no tiene idea de cómo opera el motor de TradingView ni sabe pensar con contexto de ejecución. El modelo de lenguaje se limita a predecir el siguiente token más probable basándose en el dataset con el que lo entrenaron.

Y ahí es donde está la trampa principal. En los datos de entrenamiento de la red neural se coló un rejunte insólito:

  • Scripts antiquísimos de Pine Script v2, v3 y v4 que quedaron recontra obsoletos y tiran errores en la terminal moderna.
  • Miles de librerías custom de GitHub donde los autores pisoteaban las funciones base con total impunidad.
  • Pedazos de código en Python, C++ y MQL5.

Cuando le pedís a la IA «escribime un RSI adaptativo con zonas de sobrecompra dinámicas», el modelo agarra un nombre de función que le suena de Python, lo mezcla con la sintaxis vieja de Pine Script v3, le encaja un prefijo ta. bien bonito y te tira una fruta como ta.optimized_rsi().

Para la red neuronal, eso se ve armonioso y lógico. Para el compilador de TradingView, es basura pura y dura.

Top 4 de variables truchas y alucinaciones fatales de ChatGPT

1. Wrappers inventados en el espacio de nombres ta.

En la quinta versión de Pine Script, todos los indicadores técnicos pasaron al módulo ta.. La red neuronal captó la regla, pero empezó a encajar ese prefijo en cualquier lado.

  • Lo que inventa la IA: ta.supertrend_indicator(), ta.smart_macd(), ta.volume_accumulator().
  • Cómo es en realidad: La función nativa Supertrend devuelve una tupla con dos valores [value, direction] = ta.supertrend(factor, period), y no un indicador armado y bonito en una sola línea.

2. Viajes en el tiempo con request.security (Sesgo de anticipación o Look-ahead Bias)

Este es el pecado más peligroso de las redes neuronales. El indicador dibuja ganancias espaciales en el backtest solo porque ChatGPT armó mal la consulta de datos de una temporalidad mayor.

  • Lo que inventa la IA: request.security(syminfo.tickerid, "D", close)
  • Dónde está la trampa: Sin especificar explícitamente los parámetros de fusión de barras barmerge.lookahead_off, la estrategia en un gráfico de 5 minutos a las 10:00 a. m. ya «sabe» a qué precio va a cerrar la vela diaria a las 23:59. En el histórico te da un 99% de aciertos. En el mercado real es una quemada de cuenta instantánea, porque el futuro en tiempo real no lo sabe nadie.

3. Invento de propiedades de órdenes inexistentes en strategy.entry

Cuando intentás configurar un tamaño de posición dinámico, ChatGPT se inventa argumentos que no existen ni por casualidad en la API.

  • Lo que inventa la IA: strategy.entry("Long", strategy.long, risk_percent=2.0, max_slippage=3)
  • Cómo es en realidad: La gestión del riesgo se declara en la anotación strategy() o se calcula por matemática pura mediante el argumento qty. No existe ningún risk_percent adentro de la llamada de la orden.

4. Temporalidades y tipos de datos inventados

A la red neuronal le encanta escribir "15m" o "1h" cuando le pasa temporalidades a las funciones. Sin embargo, Pine Script es súper estricto y te pide usar strings como "15" para los minutos y "60" o "240" para las horas. ¿Una pavada? Sí, pero te va a tirar abajo el script de entrada en la compilación.

Explicado fácil: El fantasma vs. El código que sirve

Para liquidar el tema de una vez por todas, mirá estos dos ejemplos. El primero es el clásico Frankestein que te tira ChatGPT por defecto. El segundo es código limpio, compilable en Pine Script v5 y con lógica real.

La porquería de ChatGPT (no compila y alucina):

//@version=5
strategy("AI Hallucination Strategy", overlay=true)
// Error 1: la función ta.custom_adaptive_rsi no existe en Pine Script
rsi_val = ta.custom_adaptive_rsi(close, 14, 80, 20)
// Error 2: firma incorrecta (ta.supertrend recibe factor y atrPeriod, sin source)
// y el resultado en tupla se asignó a una sola variable
st_val = ta.supertrend(close, 3.0, 10)
// Error 3: lookahead_on sin desplazamiento [1] - en el histórico la EMA chupa datos del futuro
daily_ema = request.security(syminfo.tickerid, "D", ta.ema(close, 200), barmerge.gaps_off, barmerge.lookahead_on)
if (ta.crossover(rsi_val, 50) and close > daily_ema)
    // Error 4: strategy.entry no tiene el parámetro risk_level
    strategy.entry("Buy", strategy.long, risk_level=1.5)

Código pro y funcional en Pine Script v5:

//@version=5
strategy("Clean Quantitative Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Parámetros de entrada tipados
rsi_len   = input.int(14, title="RSI Length", minval=1)
st_factor = input.float(3.0, title="Supertrend Factor", step=0.1)
st_period = input.int(10, title="Supertrend Period", minval=1)
// 1. RSI estándar
rsi_val = ta.rsi(close, rsi_len)
// 2. El Supertrend devuelve la línea y la dirección (-1 = tendencia alcista, 1 = bajista)
[st_line, st_dir] = ta.supertrend(st_factor, st_period)
plot(st_line, "Supertrend", color = st_dir < 0 ? color.green : color.red)
// 3. EMA diaria sin mirar al futuro ni repintar (repainting):
//    valor del día CERRADO anterior ([1]) + lookahead_on - patrón seguro estándar
daily_ema = request.security(syminfo.tickerid, "D", ta.ema(close, 200)[1], barmerge.gaps_off, barmerge.lookahead_on)
// Señales únicamente en barra confirmada (cerrada)
long_condition  = barstate.isconfirmed and ta.crossover(rsi_val, 50)  and close > daily_ema and st_dir < 0
short_condition = barstate.isconfirmed and ta.crossunder(rsi_val, 50) and close < daily_ema and st_dir > 0
// Entrar en dirección contraria da vuelta la posición automáticamente
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

Checklist: cómo filtrar el código falopa de la IA

Si vas a usar la red neuronal como un junior para que te tire código, guardate estas reglas que te van a ahorrar cientos de horas y dolores de cabeza:

  1. Obligá a la IA a escribir estrictamente en Pine Script v5. Poné en el prompt de forma clara: «Usá estrictamente Pine Script v5. Prohibido usar funciones sin los prefijos ta. y request. Prohibido inventar métodos custom».
  2. Buscá funciones fantasma en el Reference Manual. Si ves una función extraña onda ta.something() en el código, tomate el laburo de buscarla en la guía oficial de TradingView. En el 90% de los casos no existe.
  3. Auditoría al request.security. Mirá siempre los argumentos. Si no está el barmerge.lookahead_off, tu backtest es un cuento de hadas que no pincha ni corta en la realidad.
  4. Pedile a la IA que comente cada línea. Cuando la red neural tiene que explicar la lógica de cada instrucción, alucina mucho menos con nombres de funciones inventados.

Gestión de riesgo: donde la realidad destroza los «neurograles»

Por más que el código de ChatGPT haya compilado de diez y no tire errores de sintaxe, no te olvides de cómo funciona el mercado:

  • Slippage y comisiones. Las redes neuronales jamás contemplan el spread ni la comisión del exchange cuando testean estrategias. En una temporalidad de 1 minuto, un script con 1000 operaciones diarias va a parecer una nave espacial en los papeles, pero en la práctica le vas a regalar toda la guita al exchange en comisiones de maker/taker. Poné siempre a mano en la configuración de la estrategia una comisión (mínimo 0.05% por trade) y un slippage de 2 a 3 ticks.
  • Stop-loss dinámico. Olvidate de los take-profits fijos del 1% o 2%. La volatilidad del mercado cambia todos los días. Atá siempre tus órdenes de protección a la volatilidad actual mediante el ATR: Stop Loss Price = Entry Price ± (ta.atr(14) × 1.5)

Se puede y se debe usar ChatGPT para hacer trading, pero solo como un asistente rápido de sintaxis para tareas repetitivas. En cuanto le dejás a la IA el diseño de toda la arquitectura y la lógica de los indicadores, tenés asegurado un combo de alucinaciones, gráficos hermosos venidos del futuro y funciones truchas que el mercado te va a cobrar después directo de tu bolsillo.

Resumir esta publicación de blog con:

FAQ

ChatGPT utiliza predicción probabilística de tokens sobre datos de entrenamiento que mezclan sintaxis antigua de Pine Script (v3/v4), librerías personalizadas y lenguajes de programación diversos. Genera nombres de funciones plausibles pero falsos, como ta.optimized_rsi(), en lugar de validar los métodos contra la documentación oficial de la API de TradingView.

Este sesgo ocurre cuando request.security() solicita datos de temporalidades superiores sin el parámetro barmerge.lookahead_off, permitiendo que el script lea precios de cierre futuros durante el backtest. Para solucionarlo, agregue explícitamente barmerge.lookahead_off y ejecute las entradas de órdenes en barras cerradas usando el desplazamiento de índice histórico [1].

Actualice la sintaxis obsoleta al estándar actual de Pine Script v5 o v6, contraste los espacios de nombres como ta. y strategy. con el Manual de Referencia oficial de TradingView, reemplace los parámetros ficticios por entradas válidas y valide la lógica de ejecución en datos de ticks reales.
Piter Wacker

I am a trading specialist with expertise in market analysis, risk management, and investment strategies. I focus on identifying opportunities, executing trades with discipline, and delivering consistent results.

...

Escribe una opinión

Tu correo electrónico no será publicado. Los campos obligatorios están marcados *