Sistema di Persistenza

Recupero Posizione

Il motore di trading include un livello di persistenza integrato progettato per sopravvivere a crash, riavvii e arresti imprevisti senza perdere lo stato critico del trading.

Tutti i dati di trading attivi vengono automaticamente memorizzati su disco utilizzando il componente PersistentMap personalizzato.

Il sistema memorizza in modo persistente:

  • Posizioni attive
  • Ordini in sospeso
  • Controlli di trading per simbolo
  • Stati di gestione del rischio

Quando il bot si riavvia:

  1. 1.I file persistenti vengono caricati automaticamente.
  2. 2.Lo stato di trading precedente viene ripristinato in memoria.
  3. 3.Le posizioni attive continuano ad essere monitorate immediatamente.
  4. 4.Gli ordini in sospeso continuano a tracciare lo stato di esecuzione dello scambio.
  5. 5.I controlli del rischio rimangono preservati.

Questo permette al bot di continuare l'operatività senza intervento manuale dopo le interruzioni.

Scopo:

  • Prevenire la perdita di traccia delle posizioni aperte
  • Preservare la continuità del trading
  • Mantenere uno stato accurato della gestione del rischio
  • Evitare entrate duplicate dopo il riavvio
Persistence System Example

Struttura Database

Il livello di persistenza utilizza un leggero storage locale basato su file costruito sulla serializzazione Python pickle.

Ogni struttura persistente è memorizzata in un file indipendente:

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

L'architettura è intenzionalmente minimalista e ottimizzata per sistemi di trading a bassa latenza.

Posizioni Attive

Memorizza le operazioni attualmente aperte.

Ogni posizione contiene:

  • Simbolo di trading
  • Lato posizione
  • Quantità
  • Prezzo di entrata
  • Prezzo di stop loss
  • Prezzo di take profit
  • Stato trailing stop
  • Timestamp

Scopo:

  • Riprendere la gestione della posizione dopo il riavvio
  • Continuare la logica di stop loss e trailing
  • Preservare lo stato esatto di entrata

Ordini in Sospeso

Memorizza gli ordini dello scambio in attesa di conferma di esecuzione.

Ogni ordine contiene:

  • Simbolo
  • Lato ordine
  • Tipo ordine
  • Quantità
  • ID ordine dello scambio
  • Stato corrente

Scopo:

  • Prevenire ordini duplicati
  • Continuare a monitorare lo stato di esecuzione dello scambio
  • Recuperare flussi di ordini non completati

Controlli Simbolo

Memorizza i permessi di trading runtime e gli stati di protezione.

Ogni simbolo può contenere:

  • Stato acquisto abilitato
  • Stato vendita abilitato
  • Motivi di disabilitazione
  • Stati di blocco rischio

Scopo:

  • Preservare le restrizioni di rischio automatizzate
  • Prevenire la riattivazione accidentale dopo il riavvio

Logica Recupero Crash

Il sistema di persistenza è progettato per il recupero automatico durante:

  • Crash del processo
  • Riavvii del server
  • Guasti VPS
  • Interruzioni di corrente
  • Eccezioni impreviste

Persistenza Asincrona

Tutte le scritture sono elaborate in un thread dedicato in background.

Caratteristiche:

  • Esecuzione trading non bloccante
  • Salvataggio automatico continuo
  • Pianificazione salvataggio basata su coda

Scopo:

  • Prevenire ritardi nel trading causati da operazioni su disco.

Salvataggio File Atomico

Il sistema utilizza la sostituzione atomica dei file per la massima sicurezza dei dati.

Flusso di salvataggio:

  1. 1.I dati vengono scritti in un file temporaneo .tmp.
  2. 2.Il file temporaneo è completamente completato.
  3. 3.Il file viene rinominato atomicamente nel file di persistenza finale.

Scopo:

  • Prevenire file di persistenza danneggiati durante crash o scritture interrotte.

Deduplicazione Salvataggio

La coda di persistenza rimuove automaticamente le richieste di salvataggio obsolete.

Comportamento:

  • Solo lo stato più recente viene persistito.
  • Le scritture su disco ridondanti vengono saltate.

Scopo:

  • Ridurre l'utilizzo del disco
  • Migliorare le prestazioni sotto alta frequenza di aggiornamento

Ricarica Automatica Stato

Durante l'avvio:

  1. 1.I file di persistenza vengono rilevati.
  2. 2.Gli oggetti serializzati vengono caricati nuovamente in memoria.
  3. 3.Il motore di trading riprende il monitoraggio immediatamente.

Se i file di persistenza non esistono:

  • Un nuovo storage pulito viene automaticamente inizializzato.

Thread Safety

Il motore di persistenza utilizza lock di sincronizzazione interni durante le operazioni di salvataggio.

Caratteristiche:

  • Scritture concurrent-safe
  • Accesso multi-thread sicuro
  • Sostituzione file protetta

Scopo:

  • Garantire coerenza tra thread di trading e livello di persistenza

Protezione Spegnimento Graduale

Prima dello spegnimento:

  1. 1.Un'operazione di salvataggio finale viene forzata.
  2. 2.La coda di salvataggio viene completamente svuotata.
  3. 3.Il thread di persistenza in background viene fermato in modo sicuro.

Scopo:

  • Garantire che l'ultimo stato di trading venga scritto su disco prima dell'uscita.