Système de Persistance

Récupération de Position

Le moteur de trading inclut une couche de persistance intégrée conçue pour survivre aux crashes, redémarrages et arrêts inattendus sans perdre l’état critique du trading.

Toutes les données de trading actives sont automatiquement stockées sur le disque à l’aide du composant personnalisé PersistentMap.

Le système stocke de manière persistante :

  • Positions actives
  • Ordres en attente
  • Contrôles de trading par symbole
  • États de gestion des risques

Lorsque le bot redémarre :

  1. 1.Les fichiers persistants sont automatiquement chargés.
  2. 2.L'état de trading précédent est restauré en mémoire.
  3. 3.Les positions actives continuent à être surveillées immédiatement.
  4. 4.Les ordres en attente continuent de suivre l’état d’exécution de la bourse.
  5. 5.Les contrôles de risque restent préservés.

Cela permet au bot de continuer son fonctionnement sans intervention manuelle après des interruptions.

Objectif :

  • Empêcher de perdre la trace des positions ouvertes
  • Préserver la continuité du trading
  • Maintenir un état précis de la gestion des risques
  • Éviter les entrées en double après un redémarrage
Persistence System Example

Structure de la Base de Données

La couche de persistance utilise un stockage local léger basé sur des fichiers, construit sur la sérialisation Python pickle.

Chaque structure persistante est stockée dans un fichier indépendant :

  • active_positions.pkl
  • pending_orders.pkl
  • symbol_controls.pkl

L'architecture est volontairement minimaliste et optimisée pour les systèmes de trading à faible latence.

Positions Actives

Stocke les transactions actuellement ouvertes.

Chaque position contient :

  • Symbole de trading
  • Côté de la position
  • Quantité
  • Prix d'entrée
  • Prix du stop loss
  • Prix du take profit
  • État du trailing stop
  • Horodatage

Objectif :

  • Reprendre la gestion des positions après un redémarrage
  • Continuer la logique de stop loss et de trailing
  • Préserver l'état exact de l'entrée

Ordres en Attente

Stocke les ordres de bourse en attente de confirmation d'exécution.

Chaque ordre contient :

  • Symbole
  • Côté de ordre
  • Type d'ordre
  • Quantité
  • ID d'ordre de la bourse
  • Statut actuel

Objectif :

  • Empêcher les ordres en double
  • Continuer à surveiller l'état d'exécution de la bourse
  • Récupérer les flux de commandes non terminés

Contrôles des Symboles

Stocke les autorisations de trading à l'exécution et les états de protection.

Chaque symbole peut contenir :

  • Statut d’activation des achats
  • Statut d’activation des ventes
  • Raisons de désactivation
  • États de verrouillage des risques

Objectif :

  • Préserver les restrictions de risque automatisées
  • Empêcher une réactivation accidentelle après un redémarrage

Logique de Récupération après Crash

Le système de persistance est conçu pour une récupération automatique lors :

  • Crashes de processus
  • Redémarrages de serveur
  • Pannes VPS
  • Pannes de courant
  • Exceptions inattendues

Persistance Asynchrone

Toutes les écritures sont traitées dans un thread dédié en arrière-plan.

Fonctionnalités :

  • Exécution de trading non bloquante
  • Sauvegarde automatique continue
  • Planification des sauvegardes basée sur une file d’attente

Objectif :

  • Empêcher les retards de trading causés par les opérations disque.

Sauvegarde Atomique de Fichier

Le système utilise un remplacement atomique de fichier pour une sécurité maximale des données.

Flux de sauvegarde :

  1. 1.Les données sont écrites dans un fichier temporaire .tmp.
  2. 2.Le fichier temporaire est complètement terminé.
  3. 3.Le fichier est renommé de manière atomique en fichier de persistance final.

Objectif :

  • Empêcher la corruption des fichiers de persistance lors de crashes ou d'écritures interrompues.

Déduplication des Sauvegardes

La file d'attente de persistance supprime automatiquement les demandes de sauvegarde obsolètes.

Comportement :

  • Seul l'état le plus récent est persisté.
  • Les écritures disque redondantes sont ignorées.

Objectif :

  • Réduire l'utilisation du disque
  • Améliorer les performances sous une fréquence de mise à jour élevée

Rechargement Automatique de l’État

Au démarrage :

  1. 1.Les fichiers de persistance sont détectés.
  2. 2.Les objets sérialisés sont rechargés en mémoire.
  3. 3.Le moteur de trading reprend la surveillance immédiatement.

Si les fichiers de persistance n’existent pas :

  • Un nouveau stockage propre est automatiquement initialisé.

Sécurité des Threads

Le moteur de persistance utilise des verrous de synchronisation internes pendant les opérations de sauvegarde.

Fonctionnalités :

  • Écritures concurrentielles sûres
  • Accès multi-thread sécurisé
  • Remplacement de fichier protégé

Objectif :

  • Assurer la cohérence entre les threads de trading et la couche de persistance

Protection contre l’Arrêt Gracieux

Avant l'arrêt :

  1. 1.Une opération de sauvegarde finale est forcée.
  2. 2.La file d'attente de sauvegarde est complètement vidée.
  3. 3.Le thread de persistance en arrière-plan est arrêté en toute sécurité.

Objectif :

  • Garantir que l'état de trading le plus récent est écrit sur le disque avant la sortie.