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
- Où
- 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
| Forme | Par défaut | Ce que ça change |
|---|---|---|
| line | épaisseur 1 | Une série alignée sur les barres ; les valeurs null sont des trous. |
| histogram | — | Des colonnes avec une couleur positive et une couleur négative ; une barre sans valeur n'émet aucun point. |
| bands | fill 0.12 | Une 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. |
| markers | — | Des points à un prix sur une barre, en pastille, en flèche haute ou basse ou en carré, avec une étiquette facultative. |
| levels | to = null | Des niveaux horizontaux d'une barre à une autre ; une fin à null prolonge le niveau jusqu'au bord droit. |
| table | aligné à gauche | Un tableau flottant en DOM — il se lit, se sélectionne et se copie. |
| panel | — | Un 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.
Pages liées
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.