Blog › Maintenance de NinjaTrader
NinjaTrader 8 · Performance et risque

NinjaTrader 8 lent ou avec les bougies gelées : pourquoi ça arrive, ce que ça vous coûte et comment le résoudre

Par Trading Strategy Designer · Lecture 8 min · Recherche technique avec sources citées

Si votre NinjaTrader 8 est devenu lent, que les bougies cessent de se mettre à jour en plein marché ou que la plateforme se ferme toute seule, le problème ne vient très probablement ni de votre connexion ni de votre ordinateur : il est dans la base de données interne de NinjaTrader. Et ce n'est pas une gêne technique — c'est un risque financier mesurable.

Dans ce guide, nous expliquons, avec la documentation officielle et des études évaluées par des pairs, pourquoi cela arrive, ce que cela vous coûte vraiment, ce que vous pouvez faire vous-même et comment éviter que cela se reproduise.

Qu'est-ce que la base de données de NinjaTrader et pourquoi elle se dégrade

NinjaTrader 8 enregistre vos ordres, exécutions, positions et historique de prix dans une base de données SQLite locale (dossier Documents\NinjaTrader 8\db). SQLite est fiable sur des milliards de déploiements, mais sa propre documentation énumère les conditions exactes qui la corrompent[1] — et plusieurs sont habituelles dans un environnement de trading intensif.

Pourquoi NinjaTrader 8 est particulièrement vulnérable

Condition (SQLite officiel)Présente dans le trading réel
Verrouillage de fichier défectueux / accès concurrentPlusieurs instances ou comptes partagent les mêmes fichiers en même temps
Échec de fsync (le disque « ment » sur l'écriture)Volume d'ordres élevé : des milliers d'écritures par session
Arrêt ou plantage au milieu d'une transactionChutes de flux, reconnexions, fermetures forcées
Sauvegarde pendant une transaction activeOutils qui copient le dossier avec NinjaTrader ouvert
Le guide de SQLite lui-même avertit que, plus le volume d'écriture est élevé, plus la dépendance au bon fonctionnement de fsync() est grande — précisément le profil d'un copieur multi-compte qui émet des milliers d'ordres par jour.

Symptômes : comment savoir si c'est votre base de données

La chaîne causale : du fichier à la perte

Le dommage suit une séquence mécanique et reproductible :

#MaillonCe qui se passe
1BD corrompue ou énormeErreurs de données (ID dupliqués) ou fichier endommagé ; lectures lentes
2La plateforme recharge la BD sur le thread de l'écranÀ la reconnexion du flux, le graphique tente de recharger les exécutions depuis la BD
3BlocageLe thread de l'écran se bloque ; les bougies s'arrêtent, l'opérationnel continue sur un autre thread
4Exécution endommagéeOrdres tardifs, dupliqués ou impossibles ; position non gérée
5Perte financièreSlippage, position piégée, risque sans stop

Ce n'est pas une gêne technique : c'est un risque financier mesurable

Un blocage, c'est au fond une latence extrême. Et la latence a un coût quantifié par la littérature académique.

Coût du retard
≈14 %
du coût d'immédiateté provenait de 500 ms de latence ; il a triplé depuis les 5 % de 1995[2]
Croît avec
σ ↑
la volatilité de l'actif : plus le prix bouge, plus chaque milliseconde perdue coûte cher

Si 500 ms représentent déjà un coût substantiel, un blocage de secondes ou de minutes transforme ce coût en une perte de premier ordre. Et cela arrive justement quand le marché est le plus volatil — c'est-à-dire quand le flux tombe et que la BD est sous tension.

Une étude du Journal of Financial Economics (2022) sur les pannes de courtiers documente en outre que, quand votre plateforme vous bloque, vous perdez le contrôle de votre risque au pire moment ; ce n'est pas une anecdote, c'est un effet mesuré à l'échelle du marché[3].

Un cas réel, déjà documenté par NinjaTrader[4] : un trader a tenté de fermer une position à un niveau technique critique ; la plateforme s'est figée et il n'a pas pu sortir. Au rétablissement, les ordres de vente qu'il avait appuyés à plusieurs reprises pendant le blocage se sont exécutés plusieurs fois. Résultat déclaré : pertes significatives.

Comment cela se traduit dans votre P&L

DommageEffet sur votre compte
Slippage dû au blocagePire prix d'entrée/sortie sur chaque opération concernée
Position piégéePerte du côté adverse tant que vous ne pouvez pas fermer
Ordres dupliqués / fantômesExposition non souhaitée, position inversée
Données historiques corrompuesBacktests et statistiques mal calculés → décisions erronées
Enregistrements erronésLitiges avec les prop firms, erreurs fiscales/comptables
Honnêteté : la défaillance de fond appartient à la plateforme (elle recharge sa base de données sur le thread de l'écran). L'opérateur ne la cause pas ; il la subit. C'est pourquoi la bonne défense est préventive et automatique, et non de compter sur le fait que l'utilisateur « apprenne à redémarrer ».

Solutions manuelles (et pourquoi elles ne suffisent pas)

Le problème, c'est que cela est manuel, occasionnel et risqué : il faut y penser, choisir le moment (marché fermé) et une mauvaise manœuvre peut vous laisser sans historique. La plupart ne réagissent que lorsque quelque chose est déjà cassé.

La façon d'éviter que cela se reproduise : automatiser la maintenance

Plutôt que d'éteindre des incendies, la solution durable est que la maintenance se fasse toute seule, en arrière-plan et au bon moment. C'est pour cela que nous avons créé TSD DB Guardian, un programme externe à NinjaTrader qui s'occupe de la santé de sa base de données sans que vous ayez rien à faire :

Il fonctionne de façon programmable (hebdomadaire, tous les 15 ou tous les 30 jours) et comprend un bouton d'urgence pour lancer la maintenance instantanément. C'est un logiciel Windows qui coexiste avec NinjaTrader 8 ; ce n'est pas un module qui se charge à l'intérieur de la plateforme.

Honnêteté : DB Guardian réduit les blocages et maintient la base saine, mais il ne remplace pas vos propres sauvegardes ni ne garantit des résultats de trading. C'est un outil de maintenance et de protection.

Arrêtez de vous battre avec la base de données de NinjaTrader

Essayez TSD DB Guardian 14 jours gratuits, avec toutes les fonctions et sans carte.

Voir TSD DB Guardian Essayer gratuitement 14 jours
Bilan de santé du graphique en bougies de NinjaTrader avec TSD DB Guardian
TSD DB Guardian surveille la santé de la base de données de NinjaTrader en arrière-plan.

Questions fréquentes

Vais-je perdre mon historique de données en réparant la base ?

Non, si c'est fait avec une sauvegarde préalable. DB Guardian sauvegarde toujours avant d'agir ; si vous le faites manuellement, faites la copie vous-même d'abord.

Dois-je arrêter de trader pour faire la maintenance ?

Non. DB Guardian attend le marché fermé et travaille en arrière-plan. La maintenance manuelle, elle, vaut mieux la faire avec la plateforme fermée.

Est-ce un indicateur NinjaTrader ?

Non. C'est un programme Windows indépendant qui coexiste avec NinjaTrader 8 et s'occupe de sa base de données depuis l'extérieur.

Pourquoi se fige-t-il justement dans les moments de plus grand mouvement ?

Parce que la volatilité amène plus d'ordres, plus d'écritures et plus de reconnexions de flux — les conditions exactes qui stressent la base de données SQLite et déclenchent le rechargement sur le thread de l'écran.

Références

  1. SQLite. How To Corrupt An SQLite Database File. sqlite.org/howtocorrupt.html
  2. Moallemi, C. C., & Saglam, M. (2013). The Cost of Latency in High-Frequency Trading. Operations Research, 61(5).
  3. Retail trader sophistication and stock market quality: Evidence from brokerage outages. Journal of Financial Economics (2022).
  4. NinjaTrader Support Forum. Issue with Order Flow Market Depth Map Freezing Platform — significant loss incurred.
  5. NinjaTrader Help Guide. Operations > Database Operations (Reset DB / Repair DB).

← Retour au blog