Diagrama en JavaScript
StockSharp JS Diagram es un componente de navegador independiente y sin dependencias que renderiza el esquema visual de estrategia de Designer —el mismo diagrama de bloques de elementos conectados— en un canvas HTML. Se publica en npm como @stocksharp/diagram y da vida a los diagramas de estrategia de solo lectura que se muestran en los sitios web de StockSharp.
Una estrategia se describe como un esquema: un conjunto de nodos (elementos como una fuente de velas, un indicador, una condición o una orden) conectados entre sí mediante puertos tipados. El componente toma ese esquema más una paleta (el catálogo de tipos de elementos, sus puertos y colores) y lo dibuja.
Demostración en vivo
El diagrama de abajo es el motor real ejecutándose en esta página: un esqueleto mínimo de estrategia «fuente de datos → indicador → gráfico». Arrastra el canvas para desplazarte, usa la rueda para hacer zoom y pulsa el botón de expandir para abrirlo a pantalla completa.
Los tres bloques son una fuente de Velas que alimenta un Indicador (una media móvil simple); tanto las velas como la salida del indicador se dibujan en un elemento Chart. Este es el patrón completo más pequeño de Designer: producir datos, transformarlos y visualizarlos.
Instalación
Instala el paquete desde npm:
npm install @stocksharp/diagram
Luego importa los módulos ES: import { renderScheme } from '@stocksharp/diagram/embed' para la incrustación de solo lectura, o import { StockSharpDiagram } from '@stocksharp/diagram' para el editor interactivo.
Incrustar un diagrama
El componente expone renderScheme(host, paletteUrl, scheme) desde el punto de entrada @stocksharp/diagram/embed. Proporciónale un elemento anfitrión, la URL de un JSON de paleta y un esquema construido a partir de nodes y links:
import { renderScheme } from '@stocksharp/diagram/embed';
const scheme = {
nodes: [
{ id: 'candles', typeId: 'CandleElement', name: 'Candles', x: 60, y: 130 },
{ id: 'sma', typeId: 'IndicatorElement', name: 'SMA', x: 340, y: 60 },
{ id: 'chart', typeId: 'ChartElement', name: 'Chart', x: 620, y: 130 },
],
links: [
{ from: 'candles', fromPort: 'Output', to: 'sma', toPort: 'Input' },
{ from: 'sma', fromPort: 'Output', to: 'chart', toPort: 'Input' },
{ from: 'candles', fromPort: 'Output', to: 'chart', toPort: 'Input' },
],
};
renderScheme(document.getElementById('diagram'), '/data/designer-palette.json', scheme);
El typeId de cada nodo debe existir en la paleta; los tipos desconocidos se renderizan como bloques de marcador de posición. Los puertos se referencian por su key, y un enlace es válido cuando el tipo del puerto de origen es compatible con el tipo del puerto de destino. renderScheme es de solo lectura: el motor distribuye, aplica el tema (sigue la configuración clara/oscura de la página) y permite al espectador desplazarse, hacer zoom y expandir, pero no edita el esquema.
El mismo componente también funciona como un editor completo: arrastra elementos desde una paleta, conecta puertos, edita y elimina nodos, deshaz/rehaz. Consulta Editor interactivo y Eventos y API.
Véase también
- Editor interactivo
- Eventos y API
- Gráficos en JavaScript
- Designer — el editor visual de estrategias de escritorio
- Repositorio del diagrama