Editor de indicadores del usuario: escribir, ejecutar y mostrar tus propios indicadores
El diálogo «Indicadores personalizados» te permite escribir un script de indicador, ejecutarlo sobre las barras reales del gráfico actual y guardarlo. Los scripts guardados se suman al panel de Indicadores, en «Mis scripts», donde se activan y se desactivan como los integrados.
Senzoukria · Documentación · Actualizado en septiembre de 2026
Dónde encontrarlo
- Dónde
- Gráfico del Replay → chip «Script» (tooltip «Escribe tu propio indicador (se ejecuta aislado)»); página Scripting → interruptor «Mostrar en el gráfico»
- Almacenamiento
- Clave de localStorage orderflow.userIndicators.v1; visibilidad por gráfico en el store de ajustes de Indicadores
- Alcance de la ejecución
- Hasta las 600 barras más recientes, datos reales del gráfico, presupuesto de 2 s en el entorno aislado
- Cadencia en el gráfico
- Como máximo una ejecución en curso por script y al menos 400 ms entre dos ejecuciones
Qué hace
El diálogo se titula «Indicadores personalizados». Una lista a la izquierda muestra cada script guardado con su destino de dibujo; «+ Nuevo indicador» crea uno llamado «Mi indicador» con el script por defecto (una SMA de 20 períodos) y dos parámetros, Período (20, de 1 a 500) y Color (#7ed321). La parte derecha contiene el campo de nombre (48 caracteres como máximo), el selector de destino de dibujo y el mismo editor de código que la página Scripting, con números de línea y sangrado con Tab.
El botón importante es «▶ Ejecutar en el gráfico actual». Ejecuta el script en el entorno aislado sobre las barras reales del gráfico, 600 como máximo, e informa de «✓ N salidas en X ms — sobre N barras» o del error con su número de línea en primer lugar. Un bloque Consola lista lo que el script imprimió con log() / console.log() (JavaScript) o print() (Python); cuando no se imprimió nada, una pista explica qué función usar. Escape cierra el diálogo.
Ajustes
| Control | Por defecto | Qué cambia |
|---|---|---|
| Nombre del indicador | Mi indicador | Etiqueta mostrada en la lista, en el panel de Indicadores y en tablas y paneles de valores; hasta 48 caracteres |
| Destino de dibujo | En el gráfico | «En el gráfico» dibuja sobre el precio; «Panel propio» reserva un panel dedicado debajo del gráfico |
| Parámetro Período | 20 (mín. 1, máx. 500, paso 1) | Se pasa al script como params.period; ajustable después desde el panel de Indicadores |
| Parámetro Color | #7ed321 | Se pasa como params.color |
| Ejecutar en el gráfico actual | — | Ejecuta el script sobre hasta 600 barras reales y muestra las salidas, el tiempo, los registros o la línea del error |
| Guardar | — | Guarda el script; los cambios sin guardar se pierden al cerrar el diálogo |
| Eliminar | — | Quita el script y selecciona el siguiente |
Mostrar un script en el gráfico
Guardar un script no lo dibuja. En la página Scripting, el interruptor «Mostrar en el gráfico» lo explica: «El indicador se dibuja en el gráfico y se suma al panel de Indicadores, en el grupo “Mis scripts”: actívalo y desactívalo desde ahí como cualquier otro.» Guardar un indicador nuevo desde la página Scripting lo activa automáticamente. En el panel de Indicadores, cada script muestra «superpuesto» o «panel propio» junto a su nombre; cuando el script falla, en ese lugar aparece el error.
En el gráfico, los scripts del usuario se ejecutan en un worker con su propio bucle: como máximo una ejecución en curso por script y un suelo de 400 ms entre dos ejecuciones, de modo que un script lento solo retrasa su propio dibujo y nunca congela el gráfico. Los resultados se descartan cuando cambia el instrumento o el marco temporal, nunca cuando las barras simplemente se vuelven a publicar. Los valores de parámetro fijados en el panel de Indicadores tienen prioridad sobre los valores por defecto declarados en el script, y cada clave declarada recibe siempre un valor.
Errores informados por script
| Código | Significado | Qué hacer |
|---|---|---|
| threw | compute lanzó una excepción o el entorno aislado la interrumpió (presupuesto de 2 s); se muestran el mensaje y la línea | Corrige la línea citada; el dibujo anterior se retira para que una curva obsoleta no pase por una que funciona |
| shape | Una salida tiene una forma que el renderizador no conoce | Devuelve una de line, histogram, bands, markers, levels, table, panel |
| empty | El script se ejecutó sin error y no dibujó nada | Legítimo en un script de marcadores sin nada que marcar; si no, revisa el calentamiento y el orden invertido de las barras |
Límites y trampas
- Los scripts reciben las barras de la más reciente a la más antigua: bars[0] es la más reciente. Invierte el orden antes de aplicar cualquier fórmula.
- El lenguaje viaja con el script (JavaScript por defecto, Python o C++ cuando se eligen en la página Scripting). Un script Python lo ejecuta el motor Python, no se interpreta como JavaScript.
- Los puntos cuyo tiempo no coincide con una barra se descartan; los valores no finitos se convierten en huecos. Un script no puede dibujar fuera del gráfico.
- El editor no tiene resaltado de sintaxis por decisión de diseño; el botón Ejecutar y su error exacto lo sustituyen.
Páginas relacionadas
- Salidas de script: superpuesta, panel, tabla y panel de valores
- Scripts en C++ (motor WASM)
- Asistente de scripting (IA)
- El delta acumulado explicado
Esta página en otros idiomas
Preguntas frecuentes
- He guardado un script pero no aparece nada en el gráfico. ¿Por qué?
- Guardar y mostrar son dos acciones distintas. Activa «Mostrar en el gráfico» en la página Scripting o marca el script en el grupo «Mis scripts» del panel de Indicadores.
- ¿Cuántas barras recibe el script?
- Como máximo las 600 barras más recientes del gráfico, tanto en el botón Ejecutar del editor como en el gráfico en directo. Serializar un día entero de barras con sus niveles costaría más que el propio cálculo.
- ¿Puede mi script acceder a la red o a mi bróker?
- No. El script se ejecuta en un worker donde fetch, XMLHttpRequest, WebSocket, importScripts y el eval global se sobrescriben antes de que se ejecute tu código, la API de Tauri nunca se importa y el protocolo del entorno aislado añade una política default-src 'none'. Sin acceso a archivos y sin API del bróker.