Scripting: scrivere un indicatore (JavaScript)

Uno script indicatore definisce compute(bars, params, ctx) e restituisce un elenco di output. Questa pagina elenca le forme che può restituire, da dove arrivano i suoi parametri e come viene conservato lo script.

Senzoukria · Documentazione · Aggiornato a settembre 2026


Dove trovarlo

Dove
Pagina Scripting → Nuovo indicatore
Punto di ingresso
compute(bars, params, ctx), che restituisce un array di output
Destinazione
«Sul grafico» (sovrapposto) o «Pannello dedicato»
Linguaggio predefinito
JavaScript; uno script senza linguaggio registrato viene letto come JavaScript
Budget
2 secondi per esecuzione, in un worker senza rete, senza accesso ai file e senza API della piattaforma

Che cosa fa

compute() riceve le barre, i valori dei parametri e un contesto, e restituisce un elenco di output. Il renderer conosce solo quegli output — mai lo script che li ha prodotti — quindi aggiungere un indicatore non tocca mai la pipeline.

Il tempo è portato dal timestamp del bucket di ogni barra in nanosecondi, la chiave temporale di tutta la pipeline del footprint. Un punto il cui valore è null è un buco: il renderer solleva la penna invece di tracciare una falsa retta attraverso un riscaldamento o un azzeramento di sessione.

Due convenzioni vanno rispettate perché gli indicatori integrati le seguono: il delta di un livello è il volume in acquisto meno il volume in vendita e il delta di una barra è la somma dei suoi livelli; e la dimensione del tick arriva dal contesto, mai scritta in duro.

Forme di output

Le forme che un indicatore può restituire
FormaPredefinitoChe cosa cambia
linespessore 1Una serie allineata sulle barre; i valori null sono buchi.
histogramColonne con un colore positivo e uno negativo; una barra senza valore non emette alcun punto.
bandsfill 0,12Serie superiore, centrale e inferiore con un'opacità di riempimento limitata tra 0 e 1. In JavaScript non esiste un helper lib.bands: si costruisce con of.bands in Python, oppure si restituisce come oggetto semplice.
markersPunti a un prezzo su una barra, come pallino, freccia su o giù oppure quadrato, con un'etichetta facoltativa.
levelsto = nullLivelli orizzontali da una barra a un'altra; una fine null porta il livello fino al bordo destro.
tableallineamento a sinistraUna tabella flottante nel DOM — si può leggere, selezionare e copiare.
panelUn piccolo pannello di righe etichetta/valore, eventualmente colorate.

Parametri

I parametri si possono dichiarare nel pannello dell'editor, ma uno script può anche leggere una chiave direttamente dal sorgente. Il lettore di parametri analizza staticamente il codice cercando le tre forme realmente scritte — params.get("chiave", default), params["chiave"] e params.chiave ?? default — più gli alias su una riga, come una lambda o una arrow function che avvolge params.

È questo che alimenta l'opzione «Esplora ogni parametro leggibile» dell'assistente di backtest, che imposta fino a cinque assi a partire dai parametri che il tuo script legge davvero, con valori attorno ai loro default. È una proposta in un campo che puoi correggere, non un contratto: una chiave costruita dinamicamente o un ciclo su un dizionario non verranno visti.

Limiti e trappole

  • Restituire qualcosa che non è una delle forme qui sopra viene segnalato come valore di ritorno non riconosciuto, invece di essere disegnato.
  • Un'esecuzione che termina senza errore e non traccia nulla significa di solito che i valori restituiti non sono numeri.
  • Gli script risiedono nell'archivio locale di questa macchina; non vengono sincronizzati né salvati al posto tuo.
  • table e panel sono le uniche forme che non vengono disegnate sul canvas — escono come DOM, perché una tabella deve essere selezionabile.

Questa pagina in altre lingue

Domande frequenti

Come porto il mio indicatore sul grafico?
Salvalo, poi attiva «Mostra sul grafico». Entra nel pannello Indicatori nel gruppo «I miei script» e si attiva e disattiva da lì come qualsiasi altro indicatore.
Uno script può restituire più output?
Sì. compute() restituisce un array, e gli indicatori integrati fanno lo stesso — una VWAP, per esempio, emette un output bands e un output line.
Perché la mia media mobile manca all'inizio del grafico?
Perché i valori di riscaldamento sono restituiti come null, e null solleva la penna. Tracciare attraverso di essi inventerebbe dati che il periodo non ha ancora prodotto.