In questa pagina
Dove trovarlo
- Dove
- Pagina Scripting → Linguaggio → Python, poi la fascia «Motore Python»
- Download
- Sei file, circa 16,4 MB in totale, scaricati una volta sola
- Incluso
- numpy, nella wheel corrispondente all'ABI del motore
- Budget di avvio
- 120 s per l'avvio; il download ha il suo budget di 600 s
- Budget di script
- 2 s per esecuzione, come in JavaScript
Che cosa fa
Il linguaggio si sceglie per script e viene salvato insieme a esso. I due linguaggi ricevono gli stessi dati e restituiscono le stesse forme, così uno script portato dall'uno all'altro ritrova i suoi riferimenti: le colonne delle barre sono esposte con i loro nomi, gli helper di calcolo mantengono gli stessi nomi e i costruttori di output corrispondono uno a uno.
L'avvio del motore è uno stato di prima classe, mostrato su una fascia propria, e non si confonde mai con l'esecuzione di uno script. Questa distinzione conta: il motore impiega alcuni secondi ad avviarsi mentre un'esecuzione di script ha un budget di due secondi, quindi fondere i due farebbe sembrare un ciclo infinito ogni script Python corretto.
Nulla si scarica da solo. Installare è un clic; l'avvio automatico avviene solo quando i file sono già presenti.
Stati del motore
| Stato | Predefinito | Che cosa cambia |
|---|---|---|
| Non installato | iniziale | Propone «Installa il motore Python» e indica la dimensione del download una tantum. |
| Download in corso | — | Mostra una percentuale e propone «Annulla il download». |
| Avvio in corso | — | Il motore si sta avviando; gli script attendono invece di fallire. |
| Motore pronto | — | Mostra la versione e i millisecondi impiegati per l'avvio, e propone «Rimuovi il motore». |
| Motore non disponibile | — | Indica che il motore non è partito, con il messaggio grezzo, e propone «Riprova». Gli script JavaScript non sono interessati. |
| Nota offline | sempre | Una volta installato, il motore gira interamente offline: nessuno script e nessun dato viene inviato da nessuna parte. |
Linguaggio incoerente
Incollare uno script Python in una bozza ancora impostata su JavaScript produceva un errore di sintassi su una riga arbitraria, più consigli su console.log a chi stava scrivendo Python. Ora la pagina verifica se il codice contraddice il linguaggio dichiarato e lo dice, con un pulsante che passa a quello rilevato.
Il controllo è volutamente stretto: cerca solo i segni che sono veri errori di sintassi nell'altro linguaggio, e tace quando un file porta i segni di entrambi — su uno script tradotto a metà non c'è nulla di utile da dire. Mancare un rilevamento ti riporta soltanto al vecchio messaggio oscuro; inventarne uno ti manderebbe a cambiare un linguaggio che era corretto.
Limiti e trappole
- Cambiare linguaggio non traduce il tuo codice: resta esattamente com'è scritto e non girerà finché non lo riscrivi.
- I file del motore vengono scaricati dal relay del prodotto, l'unica origine remota consentita dalla politica di contenuto dell'applicazione.
- La versione del motore è fissata e verificata rispetto al binario compilato; mescolare versioni viene rifiutato invece di produrre crash illeggibili.
- Il backtest di una strategia Python esegue il ciclo dal lato Python invece di attraversare il confine tra linguaggi a ogni barra, e un test di parità confronta le sue operazioni con quelle del ciclo JavaScript barra per barra. print() finisce nel log, preceduto dalla barra corrente.
Pagine correlate
- Panoramica della pagina Scripting
- Scripting: scrivere una strategia
- Galleria dei modelli di script
- Backtest
Nella stessa sezione
- Scrivere un indicatore
- Script C++
- Scorciatoie da tastiera
- Segnalare un problema
- Schermo intero e modalità Focus
- Divergenza CVD
- Schermata Welcome
- Segnali Hurst MR
Questa pagina in altre lingue
Domande frequenti
- Mi serve Python installato sul computer?
- No. Il motore è integrato e viene scaricato una volta dall'applicazione. Non usa e non richiede un'installazione Python di sistema.
- Quali librerie sono disponibili?
- La libreria standard più numpy, distribuita nella wheel corrispondente all'ABI del motore. Dentro la sandbox non c'è accesso alla rete, quindi non si possono scaricare pacchetti durante l'esecuzione.
- Perché il mio script Python fallisce con un errore di sintassi su una riga che non esiste?
- È la firma di un linguaggio incoerente: al tuo sorgente è stato aggiunto un wrapper nell'altro linguaggio. Cambia il linguaggio dello script ed esegui di nuovo.