Sorties de script : line, histogram, bands, markers, levels, table, panel

Un script utilisateur rend un tableau de sorties, chacune identifiée par une forme. Cinq formes sont tracées sur le canvas (line, histogram, bands, markers, levels) et deux sortent en cartes DOM déplaçables (table, panel). Chaque sortie est normalisée avant d'atteindre le renderer, et tout ce qui n'est pas reconnu est signalé plutôt qu'écarté en silence.

Senzoukria · Documentation · Mis à jour en septembre 2026


Où le trouver

Valeur de retour de compute() dans tout script utilisateur ; tracée sur le graphique quand le script est affiché
Cibles
« Sur le graphique » (superposé) ou « Panneau dédié » (un panneau de 90 px sous le graphique)
Limites DOM
Tableau : 50 lignes et 8 colonnes ; encart : 50 entrées ; le surplus est tronqué
Clé temporelle
point.time doit valoir le bucketTsNs d'une barre (époque en nanosecondes) ; les autres points sont écartés

Ce que ça fait

Le renderer ne connaît que des valeurs SeriesOutput ; il ne voit jamais le script qui les a produites. Les indicateurs intégrés et les scripts utilisateur partagent donc les mêmes formes et les mêmes règles de normalisation : un point en dehors des barres visibles est écarté, une valeur non finie devient un trou (value: null), et une valeur null écrite volontairement — pendant l'amorçage d'une moyenne mobile, par exemple — est conservée comme un crayon levé, et non comme un faux segment.

La cible de tracé se choisit par script. « Sur le graphique » se superpose au prix ; « Panneau dédié » réserve un panneau dont la hauteur est fixée par le renderer à 90 px. Comme les tableaux et les encarts sont des éléments DOM, un script en panneau dédié dont les seules sorties restantes sont un tableau ne réserve pas un panneau vide : la séparation entre sorties canvas et sorties DOM se fait avant que le renderer ne compte les panneaux.

Formes et champs

Formes de sortie acceptées d'un script utilisateur, après normalisation
FormeChampsDéfauts appliqués
linepoints [{time, value|null}], style {color, width, style}color #7ed321 ; width borné entre 0,5 et 12 ; style solid, dashed ou dots
histogrampoints [{time, value}], positiveColor, negativeColor#22c55e en positif, #ef4444 en négatif ; une barre sans valeur finie n'émet aucun point
bandstableaux de points upper, basis, lower, fillAlpha, stylefillAlpha 0.12, borné entre 0 et 1 ; style comme pour line
markersmarkers [{time, price, kind, color, label ?}]kind dot, sauf arrow-up, arrow-down ou square ; color #7ed321
levelslevels [{price, from, to|null, color, label ?, style ?}]to null = prolongé jusqu'au bord droit ; seuls price et from sont obligatoires
tabletitle ?, columns [{key, label, align ?}], rows [{clé: chaîne|nombre|null}]Rejetée sans colonne ; 8 colonnes et 50 lignes au maximum ; les clés de ligne inconnues sont écartées
paneltitle ?, entries [{label, value, color ?}]50 entrées au maximum ; une entrée sans chaîne ni nombre fini en valeur est ignorée

Cartes tableau et encart

Les tableaux et les encarts sont rendus en cartes flottantes au-dessus du graphique, parce qu'un tableau doit se lire, se sélectionner et se copier — ce qu'un canvas n'offre pas — et parce qu'un panneau de 90 px ne tient que trois lignes. Chaque carte est titrée du nom du script, suivi de « · » et du titre de la sortie quand il y en a un. Les cartes se déplacent par leur en-tête ; leur position est enregistrée par sortie sous la clé orderflow.seriesTables.v1, à la fin du déplacement. Sans position enregistrée, les cartes se disposent en cascade depuis le coin supérieur droit (60 px vers le bas et 12 px vers l'intérieur, décalées de 26 px et 14 px par carte supplémentaire), pour que deux cartes ne se superposent jamais exactement.

Le DOM est mis à jour une fois par frame d'animation, pas à la cadence de publication des barres à 4 Hz, et une cellule nulle s'affiche « — » plutôt que 0. L'alignement des colonnes est à gauche par défaut ; un script qui veut ses nombres à droite pose align: "right" sur la colonne.

Comment s'en servir

Les fonctions lib construisent les formes courantes : lib.line(chronoBars, values, color, width), lib.histogram, lib.markers, lib.levels, lib.table(columns, rows, title) et lib.panel. Les tableaux passés aux fonctions lib sont en ordre chronologique : inversez d'abord les barres, qui arrivent de la plus récente à la plus ancienne. Un script peut rendre plusieurs sorties, par exemple une sortie bands et une sortie line pour un VWAP à bandes sigma.

Une forme rejetée ne disparaît pas : le script est signalé dans le panneau Indicateurs, où la ligne sous son nom devient « Valeur de retour non reconnue. Un indicateur rend une série, des lignes ou des repères — voir "Indicateur : ce qu'il faut rendre". » au lieu de sa cible de tracé. Un script qui rend des sorties ne traçant rien est signalé « empty », ce qui distingue « ça ne marche pas » de « il n'y avait rien à montrer ».

Limites et pièges

  • Les épaisseurs inférieures à 0,5 px ou supérieures à 12 px sont ramenées dans les bornes ; un nom de style inconnu retombe sur solid.
  • Les points d'histogramme dont la valeur est nulle ou non finie sont supprimés entièrement, contrairement aux lignes où null est un trou.
  • Les niveaux sont des segments indexés par price et from ; ils ne sont pas filtrés sur l'heure des barres, si bien qu'un from antérieur à l'historique chargé démarre simplement au bord gauche.
  • Un tableau de plus de 50 lignes est tronqué ; inscrivez vous-même la troncature dans le titre si le nombre compte.

Cette page dans d’autres langues

Questions fréquentes

Pourquoi mon tableau n'est-il pas dans le panneau que j'ai choisi ?
Les tableaux et les encarts sont toujours rendus en cartes DOM au-dessus du graphique, quelle que soit la cible de tracé. La cible n'agit que sur les formes canvas, comme les lignes et les histogrammes.
Comment afficher un trou plutôt qu'une ligne à zéro pendant l'amorçage ?
Rendez value: null pour ces points. Le renderer lève le crayon ; un zéro tracerait un faux segment.
Puis-je déplacer la carte du tableau et garder sa place ?
Oui. Déplacez-la par son en-tête ; la position est rangée par sortie dans le stockage local et restaurée à la réouverture du graphique.