Editor di indicatori personali: scrivi, esegui e mostra i tuoi indicatori
La finestra «Indicatori personalizzati» ti permette di scrivere uno script indicatore, eseguirlo sulle barre reali del grafico corrente e salvarlo. Gli script salvati entrano nel pannello Indicatori sotto «I miei script», dove si attivano e disattivano come quelli integrati.
Senzoukria · Documentazione · Aggiornato a settembre 2026
Dove trovarlo
- Dove
- Grafico Replay → chip «Script» (tooltip «Scrivi il tuo indicatore, eseguito in sandbox»); pagina Scripting → interruttore «Mostra sul grafico»
- Archiviazione
- Chiave localStorage orderflow.userIndicators.v1; visibilità per grafico nello store delle impostazioni degli indicatori
- Perimetro di esecuzione
- Fino alle 600 barre più recenti, dati reali del grafico, budget sandbox di 2 s
- Cadenza sul grafico
- Al massimo un'esecuzione in corso per script e almeno 400 ms tra due esecuzioni
Che cosa fa
La finestra si intitola «Indicatori personalizzati». Un elenco a sinistra mostra ogni script salvato con la sua destinazione di disegno; «+ Nuovo indicatore» ne crea uno chiamato «Il mio indicatore» con lo script predefinito (una SMA a 20 periodi) e due parametri, Periodo (20, da 1 a 500) e Colore (#7ed321). A destra ci sono il campo del nome (48 caratteri al massimo), il selettore della destinazione e lo stesso editor di codice della pagina Scripting, con i numeri di riga e l'indentazione con Tab.
Il pulsante importante è «▶ Esegui sul grafico corrente». Esegue lo script nella sandbox sulle barre effettive del grafico, al massimo 600, e riporta «✓ N output in X ms — su N barre» oppure l'errore con il suo numero di riga mostrato per primo. Un blocco Console elenca ciò che lo script ha stampato con log() / console.log() (JavaScript) o print() (Python); quando non è stato stampato nulla, un suggerimento spiega quale funzione usare. Esc chiude la finestra.
Impostazioni
| Comando | Predefinito | Che cosa cambia |
|---|---|---|
| Nome dell'indicatore | Il mio indicatore | Etichetta mostrata nell'elenco, nel pannello Indicatori e su tabelle e riquadri; fino a 48 caratteri |
| Destinazione di disegno | Sul grafico | «Sul grafico» disegna sopra il prezzo; «Pannello dedicato» riserva un pannello sotto il grafico |
| Parametro Periodo | 20 (min 1, max 500, passo 1) | Passato allo script come params.period; regolabile in seguito dal pannello Indicatori |
| Parametro Colore | #7ed321 | Passato come params.color |
| Esegui sul grafico corrente | — | Esegue lo script su un massimo di 600 barre reali e mostra output, tempi, log o la riga dell'errore |
| Salva | — | Conserva lo script; le modifiche non salvate si perdono alla chiusura della finestra |
| Elimina | — | Rimuove lo script e seleziona il successivo |
Mostrare uno script sul grafico
Salvare uno script non lo disegna. Sulla pagina Scripting, l'interruttore «Mostra sul grafico» lo spiega: «L'indicatore viene disegnato sul grafico ed entra nel pannello Indicatori, nel gruppo «I miei script» — attivalo e disattivalo da lì come qualsiasi altro.» Salvando un nuovo indicatore dalla pagina Scripting, l'interruttore si attiva da solo. Nel pannello Indicatori ogni script mostra «sul grafico» o «pannello dedicato» accanto al nome; quando lo script fallisce, al suo posto compare l'errore.
Sul grafico, gli script dell'utente girano in un worker con un loop proprio: al massimo un'esecuzione in corso per script e un minimo di 400 ms tra due esecuzioni, così uno script lento ritarda solo il proprio disegno e non blocca mai il grafico. I risultati vengono scartati quando cambia lo strumento o la granularità, mai quando le barre vengono semplicemente ripubblicate. I valori dei parametri impostati nel pannello Indicatori prevalgono sui default dichiarati nello script, e ogni chiave dichiarata riceve sempre un valore.
Errori riportati per script
| Codice | Significato | Che cosa fare |
|---|---|---|
| threw | compute ha sollevato un'eccezione o la sandbox l'ha interrotta (budget di 2 s); vengono mostrati messaggio e riga | Correggi la riga citata; il disegno precedente viene rimosso, così una curva obsoleta non può passare per una funzionante |
| shape | Un output ha una forma che il renderer non conosce | Restituisci una tra line, histogram, bands, markers, levels, table, panel |
| empty | Lo script è girato senza errori e non ha disegnato nulla | Legittimo per uno script di marker che non ha nulla da marcare; altrimenti controlla il riscaldamento e l'ordine invertito delle barre |
Limiti e trappole
- Gli script ricevono le barre dalla più recente: bars[0] è la più recente. Invertile prima di applicare qualsiasi formula.
- Il linguaggio viaggia con lo script (JavaScript per impostazione predefinita, Python o C++ se scelti nella pagina Scripting). Uno script Python viene eseguito dal motore Python, non come JavaScript.
- I punti il cui tempo non corrisponde a una barra vengono scartati; i valori non finiti diventano buchi. Uno script non può disegnare fuori dal grafico.
- L'editor non ha evidenziazione della sintassi per scelta; il pulsante di esecuzione e il suo errore esatto la sostituiscono.
Pagine correlate
- Output degli script: grafico, pannello, tabella e riquadro
- Script C++ (motore WASM)
- Assistente di scripting (IA)
- Il delta cumulato spiegato
Questa pagina in altre lingue
Domande frequenti
- Ho salvato uno script ma sul grafico non compare nulla. Perché?
- Salvare e mostrare sono due azioni diverse. Attiva «Mostra sul grafico» nella pagina Scripting oppure spunta lo script nel gruppo «I miei script» del pannello Indicatori.
- Quante barre riceve lo script?
- Al massimo le 600 barre più recenti del grafico, sia nell'esecuzione dall'editor sia sul grafico live. Serializzare un'intera giornata di barre con i loro livelli costerebbe più del calcolo.
- Il mio script può accedere alla rete o al mio broker?
- No. Lo script gira in un worker dove fetch, XMLHttpRequest, WebSocket, importScripts e la eval globale vengono sovrascritti prima del tuo codice, l'API Tauri non viene mai importata e il protocollo della sandbox aggiunge una politica default-src 'none'. Nessun accesso ai file, nessuna API del broker.