Si portas indicadores a menudo o por lotes, ayuda que el agente siga siempre el mismo orden.
El skill fija ese orden: el agente reescribe la lógica, muestra una tabla de qué se pasa y cómo, comprueba el resultado e indica las diferencias.
Cómo instalarlo
Copia el texto del skill y pégalo en el chat del agente con esta línea encima:
Guarda esto como un skill llamado "indicator-port". Si no puedes guardar skills, síguelo durante el resto de nuestra conversación.
Texto del skill
---
name: indicator-port
description: Porta un indicador de otra plataforma a ATAS mediante el servidor MCP de ATAS y Script Lab: el agente reescribe la lógica, indica las diferencias y comprueba el cálculo de forma cruzada. Úsalo cuando el usuario pida portar, convertir, pasar o reescribir un indicador a partir de su código fuente ("porta este indicador a ATAS", "convierte mi indicador", "reescribe este código para ATAS"). Requiere el código fuente. No es para indicadores de código cerrado, estrategias que operan ni órdenes.
compatibility: Requiere el servidor MCP de ATAS, acceso a Script Lab, permiso para indicadores de script, el código fuente y la posibilidad de ejecutar código para la comprobación cruzada.
metadata:
version: 0.1
updated: 2026-11-01
---
# indicator-port
Reescribe la lógica del indicador para ATAS y muestra con honestidad en qué se diferencia el resultado del original. Responde en el idioma del usuario. Si el código fuente contiene una estrategia con órdenes, porta solo el cálculo y las marcas. No añadas órdenes.
## Reglas estrictas
- Primero los derechos. Trabaja solo con código que el usuario haya escrito o cuya licencia lo permita. Si el usuario no lo sabe, díselo y pídele que lo compruebe. Conserva el aviso de autor y licencia del código fuente. No eludas protecciones ni reconstruyas código cerrado.
- No llames copia exacta al port. Di: "la lógica se ha reescrito y estas son las diferencias".
- Ejecuta siempre `scripts_preview` antes de guardar.
- Comprueba el resultado con un cálculo separado a partir de `chart_get_bars`. Si el usuario tiene valores del original, compáralos también. AI Connect da barras y capturas de pantalla de cripto. Si el gráfico del usuario es de otro instrumento, ofrece comprobarlo en un gráfico de cripto de su conexión o con valores del original.
- Si una parte no se puede portar, pregunta qué hacer. No la sustituyas en silencio.
- Dale al indicador un nombre propio. No incluyas en él nombres de otras plataformas ni sus marcas registradas.
## 1. Desglosar el código fuente
Haz una tabla antes de cualquier cambio:
```
En el código fuente En ATAS Estado
<función, parámetro> <qué lo sustituye> tal cual / distinto / no portado
```
Revisa aparte: datos de otro instrumento o timeframe, cálculo dentro de una barra sin cerrar, elementos gráficos, alertas, lógica de estrategia.
## 2. Portar
1. Lee el recurso `atas://docs/atas-script` si está disponible. Si el código fuente parece una sintaxis que ATAS Script entiende por sí mismo, compruébalo primero tal cual con `scripts_validate`.
2. Revisa los diagnósticos. Muestra al usuario cualquier error con datos de otro timeframe o instrumento y ofrécele opciones con su coste. Pregunta cuál elige.
3. `scripts_preview` en el gráfico del usuario: cuántas barras, qué series.
## 3. Comprobación cruzada
Un cálculo separado en código sobre las mismas barras. Indica el número de barras que coinciden y la tolerancia. Indica de qué depende el resultado: por ejemplo, de la profundidad del historial cargado o del timeframe del gráfico.
## 4. Guardar
Guarda solo si el usuario lo pidió o estuvo de acuerdo: `scripts_create` (compila en el momento; si devuelve `compiled: false`, corrígelo con `scripts_update_source`), después `scripts_add_to_chart`. Comprueba con `module_screenshot`.
## 5. Respuesta
```
Indicador: <nombre>, <dónde se añadió>
Portado tal cual: <lista>
Hecho de otra forma: <lista y motivo>
No portado: <lista>
Comprobación: <periodo, número de barras, con qué se comparó, si coincidió>
Correcto en timeframes: <lista>
Autor y licencia del código fuente: <según el código fuente>
```
Si algo se muestra mal, pide al usuario que describa la diferencia y corrígela: primero la causa, después el cambio, y luego de nuevo la vista previa y la comprobación cruzada.
Cómo ejecutarlo
Usa indicator-port. Este código lo escribí yo. Pórtalo a mi gráfico de BTCUSDT 5m.
<pega aquí el código fuente>
Como ejemplo, usa un pequeño indicador escrito expresamente para esta página:
//@version=5
indicator("Volume Spike Bands", overlay=true)
len = input.int(30, "Length")
mult = input.float(2.0, "Multiplier")
basis = ta.sma(close, len)
dev = mult * ta.stdev(close, len)
plot(basis, "Basis", color=color.gray)
plot(basis + dev, "Upper", color=color.teal)
plot(basis - dev, "Lower", color=color.red)
spike = volume > ta.sma(volume, len) * 2
plotshape(spike and close > basis + dev, "Up spike", shape.triangleup, location.belowbar, color.teal)
plotshape(spike and close < basis - dev, "Down spike", shape.triangledown, location.abovebar, color.red)
alertcondition(spike, "Volume spike", "Volume spike")
Qué obtienes
Primero el agente comprueba el cálculo y se detiene en lo que no se puede pasar tal cual. Aquí es la alerta:
Usa indicator-port. Este código lo escribí yo. Pórtalo a mi gráfico de BTCUSDT 5m.
<pega aquí el código fuente>
El cálculo está portado y comprobado: las tres líneas en 100 barras cerradas de BTCUSDT 5m y las 12 marcas coincidieron. Tolerancia 0,000001.
Guardarlo y añadirlo al gráfico depende de tu decisión: el compilador acepta alertcondition, pero no crea ninguna notificación.
¿Lo sustituyo por un alert() de ATAS que salte como máximo una vez por barra, o lo guardo sin notificaciones?
Pregunto por tus instrucciones de indicator-port: "Si una parte no se puede portar, pregunta qué hacer. No la sustituyas en silencio."
Hazlo una notificación automática, una vez por barra.
El indicador "Volume Surge Bands" está guardado y añadido a tu BTCUSDT 5m Binance Futures. La visualización está comprobada.
- Tal cual: parámetros 30 y 2, las tres líneas, las condiciones del pico de volumen y las marcas de triángulo.
- Distinto:
alertconditionse sustituyó por unalert()automático, con un pico de volumen, como máximo una vez por barra, sin esperar al cierre de la barra. - No portado: nada; la alerta se sustituyó con tu aprobación.
- Comprobación: 100 barras cerradas del 5 nov, 13:00-21:15 UTC. Un cálculo independiente a partir de
chart_get_bars: las tres líneas y las 12 marcas coincidieron, tolerancia 0,000001. Todavía no he visto llegar una notificación en vivo. - Timeframes: probado en 5m; la lógica funciona en el timeframe actual en cuanto se acumulan 30 barras. Los valores cambian en la barra abierta.
- Autor: tú; no se indica licencia. La autoría se mantiene en el código.
La lógica se reescribió para ATAS; el comportamiento de las notificaciones y el estilo dependen de la plataforma.

Si no tienes valores de la plataforma original, la comprobación solo demuestra que el código calcula lo que se pretendía. Dale al agente unos cuantos valores con su fecha y hora, y los comparará.
Qué necesitas
- Un agente que pueda ejecutar código para la comprobación cruzada