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
| Forma | Predefinito | Che cosa cambia |
|---|---|---|
| line | spessore 1 | Una serie allineata sulle barre; i valori null sono buchi. |
| histogram | — | Colonne con un colore positivo e uno negativo; una barra senza valore non emette alcun punto. |
| bands | fill 0,12 | Serie 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. |
| markers | — | Punti a un prezzo su una barra, come pallino, freccia su o giù oppure quadrato, con un'etichetta facoltativa. |
| levels | to = null | Livelli orizzontali da una barra a un'altra; una fine null porta il livello fino al bordo destro. |
| table | allineamento a sinistra | Una tabella flottante nel DOM — si può leggere, selezionare e copiare. |
| panel | — | Un 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.
Pagine correlate
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.