NinjaTrader 8 lento o con le candele congelate: perché succede, quanto ti costa e come risolverlo
Se il tuo NinjaTrader 8 è diventato lento, le candele smettono di aggiornarsi in pieno mercato o la piattaforma si chiude da sola, molto probabilmente il problema non è la tua connessione né il tuo computer: è nel database interno di NinjaTrader. E non è un fastidio tecnico — è un rischio finanziario misurabile.
In questa guida ti spieghiamo, con documentazione ufficiale e studi sottoposti a revisione paritaria, perché succede, quanto ti costa davvero, cosa puoi fare tu stesso e come evitare che accada di nuovo.
Cos'è il database di NinjaTrader e perché si degrada
NinjaTrader 8 salva i tuoi ordini, le esecuzioni, le posizioni e lo storico dei prezzi in un database SQLite locale (cartella Documenti\NinjaTrader 8\db). SQLite è affidabile in miliardi di installazioni, ma la sua stessa documentazione elenca le condizioni esatte che lo corrompono[1] — e diverse sono abituali in un ambiente di trading intensivo.
Perché NinjaTrader 8 è particolarmente vulnerabile
| Condizione (SQLite ufficiale) | Presente nel trading reale |
|---|---|
| Blocco del file difettoso / accesso concorrente | Più istanze o account condividono gli stessi file contemporaneamente |
Errore di fsync (il disco “mente” sulla scrittura) | Alto volume di ordini: migliaia di scritture per sessione |
| Spegnimento o crash a metà di una transazione | Cadute del feed, riconnessioni, chiusure forzate |
| Backup durante una transazione attiva | Strumenti che copiano la cartella con NinjaTrader aperto |
fsync() — esattamente il profilo di un copiatore multi-account che emette migliaia di ordini al giorno.Sintomi: come capire se è il tuo database
- Le candele restano ferme anche se il prezzo nel DOM si muove.
- Aprire un grafico o cambiare strumento richiede molto più tempo di prima.
- NinjaTrader consuma sempre più memoria e va “a scatti”.
- Chiusure inaspettate, soprattutto all'avvio o al caricamento dei dati.
La catena causale: dal file alla perdita
Il danno segue una sequenza meccanica e riproducibile:
| # | Anello | Cosa succede |
|---|---|---|
| 1 | DB corrotto o enorme | Errori di dati (ID duplicati) o file danneggiato; letture lente |
| 2 | La piattaforma ricarica il DB nel thread dello schermo | Alla riconnessione del feed, il grafico tenta di ricaricare le esecuzioni dal DB |
| 3 | Blocco | Il thread dello schermo si blocca; le candele si fermano, l'operatività prosegue su un altro thread |
| 4 | Esecuzione danneggiata | Ordini tardivi, duplicati o impossibili; posizione non gestita |
| 5 | Perdita finanziaria | Slippage, posizione intrappolata, rischio senza stop |
Non è un fastidio tecnico: è un rischio finanziario misurabile
Un blocco è, in fondo, latenza estrema. E la latenza ha un costo quantificato dalla letteratura accademica.
Se 500 ms rappresentano già un costo sostanziale, un blocco di secondi o minuti trasforma quel costo in una perdita di primo ordine. E accade proprio quando il mercato è più volatile — ovvero quando il feed cade e il DB va sotto stress.
Uno studio del Journal of Financial Economics (2022) sulle interruzioni dei broker documenta inoltre che, quando la tua piattaforma ti blocca, perdi il controllo del tuo rischio nel momento peggiore; non è un aneddoto, è un effetto misurato su scala di mercato[3].
Come si traduce nel tuo P&L
| Danno | Effetto sul tuo conto |
|---|---|
| Slippage da blocco | Prezzo di entrata/uscita peggiore in ogni operazione interessata |
| Posizione intrappolata | Perdita sul lato avverso mentre non puoi chiudere |
| Ordini duplicati / fantasma | Esposizione indesiderata, posizione invertita |
| Dati storici corrotti | Backtest e statistiche calcolati male → decisioni errate |
| Registrazioni errate | Dispute con le prop firm, errori fiscali/contabili |
Soluzioni manuali (e perché non bastano)
- Ridurre lo storico che conservi (meno giorni di dati a mano).
- Fare un backup della tua cartella di NinjaTrader prima di toccare qualsiasi cosa.
- Compattare o ricostruire il database seguendo la documentazione ufficiale[5].
Il problema è che questo è manuale, occasionale e rischioso: bisogna ricordarsene, scegliere il momento (mercato chiuso) e un passo sbagliato può lasciarti senza storico. La maggior parte reagisce solo quando qualcosa si è già rotto.
Il modo per non farlo accadere di nuovo: automatizzare la manutenzione
Invece di spegnere incendi, la soluzione sostenibile è che la manutenzione avvenga da sola, in secondo piano e nel momento giusto. Per questo abbiamo creato TSD DB Guardian, un programma esterno a NinjaTrader che si occupa della salute del suo database senza che tu debba fare nulla:
- Rileva la corruzione e la crescita eccessiva in modo continuo.
- Esegue il backup con una copia verificata prima di agire.
- Ripara quando serve e aspetta il mercato chiuso per non disturbare la tua operatività.
- Lascia un rapporto di audit firmato di ogni intervento.
Funziona in modo programmabile (settimanale, ogni 15 o ogni 30 giorni) e include un pulsante di emergenza per avviare la manutenzione all'istante. È software per Windows che convive con NinjaTrader 8; non è un componente aggiuntivo che si carica dentro la piattaforma.
Smetti di litigare con il database di NinjaTrader
Prova TSD DB Guardian 14 giorni gratis, con tutte le funzioni e senza carta.
Scopri TSD DB Guardian Prova gratis 14 giorni
Domande frequenti
Perderò il mio storico dati riparando il database?
No, se si fa con un backup preventivo. DB Guardian esegue sempre il backup prima di agire; se lo fai manualmente, fai prima tu la copia.
Devo smettere di operare per fare la manutenzione?
No. DB Guardian aspetta il mercato chiuso e lavora in secondo piano. La manutenzione manuale conviene però farla con la piattaforma chiusa.
Questo è un indicatore di NinjaTrader?
No. È un programma Windows indipendente che convive con NinjaTrader 8 e si occupa del suo database dall'esterno.
Perché si blocca proprio nei momenti di maggior movimento?
Perché la volatilità porta più ordini, più scritture e più riconnessioni del feed — le condizioni esatte che stressano il database SQLite e innescano la ricarica nel thread dello schermo.
Riferimenti
- SQLite. How To Corrupt An SQLite Database File. sqlite.org/howtocorrupt.html
- Moallemi, C. C., & Saglam, M. (2013). The Cost of Latency in High-Frequency Trading. Operations Research, 61(5).
- Retail trader sophistication and stock market quality: Evidence from brokerage outages. Journal of Financial Economics (2022).
- NinjaTrader Support Forum. Issue with Order Flow Market Depth Map Freezing Platform — significant loss incurred.
- NinjaTrader Help Guide. Operations > Database Operations (Reset DB / Repair DB).