Scripting : écrire un indicateur (JavaScript)

Un script d'indicateur définit compute(bars, params, ctx) et renvoie une liste de sorties. Cette page recense les formes qu'il peut rendre, d'où viennent ses paramètres, et où le script est rangé.

Senzoukria · Documentation · Mis à jour en septembre 2026


Où le trouver

Page Scripting → Nouvel indicateur
Point d'entrée
compute(bars, params, ctx), qui renvoie un tableau de sorties
Cible
« Sur le graphique » (superposé) ou « Panneau dédié »
Langage par défaut
JavaScript ; un script sans langage enregistré est lu comme du JavaScript
Budget
2 secondes par exécution, dans un worker sans réseau, sans accès aux fichiers et sans API de la plateforme

Ce que ça fait

compute() reçoit les barres, la valeur des paramètres et un contexte, puis renvoie une liste de sorties. Le renderer ne connaît que ces sorties — jamais le script qui les a produites — si bien qu'ajouter un indicateur ne touche jamais au pipeline.

Le temps est porté par l'horodatage de bucket de chaque barre, en nanosecondes : c'est la clé temporelle de tout le pipeline footprint. Un point dont la valeur est null est un trou : le renderer lève le crayon au lieu de tracer une fausse droite à travers un amorçage ou une remise à zéro de séance.

Deux conventions méritent d'être respectées, parce que les indicateurs intégrés les suivent : le delta d'un niveau est le volume acheteur moins le volume vendeur, et le delta d'une barre est la somme de ses niveaux ; la taille du tick vient du contexte, jamais d'une constante écrite en dur.

Formes de sortie

Les formes qu'un indicateur peut rendre
FormePar défautCe que ça change
lineépaisseur 1Une série alignée sur les barres ; les valeurs null sont des trous.
histogramDes colonnes avec une couleur positive et une couleur négative ; une barre sans valeur n'émet aucun point.
bandsfill 0.12Une série haute, une médiane et une basse, avec une opacité de remplissage bornée entre 0 et 1. Il n'existe pas d'aide lib.bands en JavaScript : elle se construit avec of.bands en Python, ou se renvoie comme un objet simple.
markersDes points à un prix sur une barre, en pastille, en flèche haute ou basse ou en carré, avec une étiquette facultative.
levelsto = nullDes niveaux horizontaux d'une barre à une autre ; une fin à null prolonge le niveau jusqu'au bord droit.
tablealigné à gaucheUn tableau flottant en DOM — il se lit, se sélectionne et se copie.
panelUn petit panneau de lignes étiquette / valeur, colorables.

Paramètres

Les paramètres se déclarent dans le panneau de l'éditeur, mais un script peut aussi lire une clé directement dans le code source. Le lecteur de paramètres analyse statiquement le code à la recherche des trois formes réellement écrites — params.get("clé", défaut), params["clé"] et params.clé ? ? défaut — plus les alias d'une ligne, comme une lambda ou une fonction fléchée qui enveloppe params.

C'est ce qui alimente l'option « Explorer tous les paramètres lisibles » de l'assistant de backtest : elle monte jusqu'à cinq axes à partir des paramètres que votre script lit vraiment, avec des valeurs autour de leurs défauts. C'est une proposition dans un champ que vous pouvez corriger, pas un contrat : une clé construite ou une boucle sur un dictionnaire ne sera pas vue.

Limites et pièges

  • Rendre autre chose que l'une des formes ci-dessus est signalé comme une valeur de retour non reconnue, plutôt que dessiné.
  • Une exécution qui se termine sans erreur et ne trace rien signifie en général que les valeurs rendues ne sont pas des nombres.
  • Les scripts vivent dans le stockage local de cette machine ; ils ne sont ni synchronisés ni sauvegardés pour vous.
  • table et panel sont les deux seules formes qui ne passent pas par le canvas — elles sortent en DOM, parce qu'un tableau doit rester sélectionnable.

Cette page dans d’autres langues

Questions fréquentes

Comment faire apparaître mon indicateur sur le graphique ?
Enregistrez-le, puis activez « Sur le graphique ». Il rejoint le panneau Indicateurs dans le groupe « Mes scripts », où il s'active et se coupe comme n'importe quel autre indicateur.
Un seul script peut-il rendre plusieurs sorties ?
Oui. compute() renvoie un tableau, et les indicateurs intégrés font pareil — un VWAP, par exemple, émet une sortie bands et une sortie line.
Pourquoi ma moyenne mobile manque-t-elle au début du graphique ?
Parce que les valeurs d'amorçage sont rendues à null, et que null lève le crayon. Tracer à travers inventerait des données que la période n'a pas encore produites.