Éditeur d'indicateurs personnels : écrire, tester et afficher vos indicateurs

La fenêtre « Indicateurs personnels » permet d'écrire un script d'indicateur, de l'exécuter sur les vraies barres du graphique en cours et de l'enregistrer. Les scripts enregistrés rejoignent le panneau Indicateurs sous « Mes scripts », où ils s'activent comme les indicateurs intégrés.

Senzoukria · Documentation · Mis à jour en septembre 2026


Où le trouver

Graphique du Replay → pastille « Script » (info-bulle « Écrivez votre propre indicateur (exécuté en bac à sable) ») ; page Scripting → interrupteur « Sur le graphique »
Stockage
Clé localStorage orderflow.userIndicators.v1 ; visibilité par graphique dans le store des réglages d'indicateurs
Portée d'exécution
Jusqu'aux 600 barres les plus récentes, vraies données du graphique, budget de 2 s en bac à sable
Cadence sur le graphique
Au plus une exécution en vol par script, et au moins 400 ms entre deux exécutions

Ce que ça fait

La fenêtre s'intitule « Indicateurs personnels ». Une liste à gauche montre chaque script enregistré avec sa cible de tracé ; « + Nouvel indicateur » en crée un nommé « Mon indicateur », avec le script par défaut (une SMA sur 20 périodes) et deux paramètres, Période (20, de 1 à 500) et Couleur (#7ed321). La partie droite porte le champ du nom (48 caractères maximum), le sélecteur de cible et le même éditeur de code que la page Scripting, avec numéros de ligne et indentation à la tabulation.

Le bouton qui compte est « ▶ Exécuter sur le graphique en cours ». Il lance le script en bac à sable sur les barres réelles du graphique, 600 au plus, et rend soit « ✓ N sorties en X ms — sur N barres », soit l'erreur avec son numéro de ligne affiché en premier. Un bloc Console liste ce que le script a écrit avec log() / console.log() (JavaScript) ou print() (Python) ; quand rien n'a été écrit, une indication rappelle quelle fonction employer. Échap ferme la fenêtre.

Réglages

Commandes de la fenêtre Indicateurs personnels
CommandePar défautCe que ça change
Nom de l'indicateurMon indicateurLibellé affiché dans la liste, dans le panneau Indicateurs et sur les tableaux et encarts ; jusqu'à 48 caractères
Cible de tracéSur le graphique« Sur le graphique » trace par-dessus le prix ; « Panneau dédié » réserve un panneau sous le graphique
Paramètre Période20 (min 1, max 500, pas 1)Transmis au script dans params.period ; réglable ensuite depuis le panneau Indicateurs
Paramètre Couleur#7ed321Transmis dans params.color
Exécuter sur le graphique en coursLance le script sur 600 barres réelles au plus et affiche les sorties, le temps, les journaux ou la ligne en erreur
EnregistrerConserve le script ; les modifications non enregistrées sont perdues à la fermeture
SupprimerRetire le script et sélectionne le suivant

Afficher un script sur le graphique

Enregistrer un script ne le trace pas. Sur la page Scripting, l'interrupteur « Sur le graphique » l'explique : l'indicateur est tracé sur le graphique et rejoint le panneau Indicateurs, dans le groupe « Mes scripts » — activez-le et coupez-le depuis là, comme n'importe quel autre. Enregistrer un nouvel indicateur depuis la page Scripting l'active automatiquement. Dans le panneau Indicateurs, chaque script affiche « sur le graphique » ou « panneau dédié » à côté de son nom ; quand le script échoue, c'est l'erreur qui s'affiche à cet endroit.

Sur le graphique, les scripts utilisateur tournent dans un worker avec leur propre boucle : au plus une exécution en vol par script et un plancher de 400 ms entre deux exécutions, si bien qu'un script lent ne retarde que son propre tracé et ne fige jamais le graphique. Les résultats sont abandonnés quand l'instrument ou l'unité de temps change, jamais quand les barres sont simplement republiées. Les valeurs de paramètres réglées dans le panneau Indicateurs l'emportent sur les défauts déclarés dans le script, et chaque clé déclarée reçoit toujours une valeur.

Erreurs signalées par script

Pourquoi un script ne trace rien, tel que signalé à côté de lui
CodeSignificationQue faire
threwcompute a levé une exception, ou le bac à sable l'a interrompu (budget de 2 s) ; le message et la ligne sont affichésCorrigez la ligne citée ; le tracé précédent est retiré, pour qu'une courbe périmée ne passe pas pour un script qui marche
shapeUne sortie a une forme que le renderer ne connaît pasRendez l'une des formes line, histogram, bands, markers, levels, table, panel
emptyLe script s'est exécuté sans erreur et n'a rien tracéLégitime pour un script de repères qui n'a rien à marquer ; sinon, vérifiez l'amorçage et l'ordre inversé des barres

Limites et pièges

  • Les scripts reçoivent les barres de la plus récente à la plus ancienne : bars[0] est la plus récente. Inversez avant d'appliquer une formule.
  • Le langage voyage avec le script (JavaScript par défaut, Python ou C++ quand ils sont choisis sur la page Scripting). Un script Python est exécuté par le moteur Python, pas comme du JavaScript.
  • Les points dont l'heure ne correspond à aucune barre sont écartés ; les valeurs non finies deviennent des trous. Un script ne peut pas dessiner en dehors du graphique.
  • L'éditeur n'a volontairement pas de coloration syntaxique ; le bouton d'exécution et son erreur exacte la remplacent.

Cette page dans d’autres langues

Questions fréquentes

J'ai enregistré un script mais rien n'apparaît sur le graphique. Pourquoi ?
Enregistrer et afficher sont deux gestes différents. Activez « Sur le graphique » sur la page Scripting, ou cochez le script dans le groupe « Mes scripts » du panneau Indicateurs.
Combien de barres le script reçoit-il ?
Au plus les 600 barres les plus récentes du graphique, aussi bien dans l'exécution depuis l'éditeur que sur le graphique en direct. Sérialiser une journée entière de barres avec leurs niveaux coûterait plus cher que le calcul.
Mon script peut-il accéder au réseau ou à mon broker ?
Non. Le script tourne dans un worker où fetch, XMLHttpRequest, WebSocket, importScripts et eval global sont écrasés avant votre code, où l'API Tauri n'est jamais importée, et où le protocole du bac à sable ajoute une politique default-src 'none'. Aucun accès aux fichiers, aucune API broker.