Sistema de Persistencia

Recuperación de Posiciones

El motor de trading incluye una capa de persistencia incorporada diseñada para sobrevivir a fallos, reinicios y apagados inesperados sin perder el estado crítico del trading.

Todos los datos de trading activos se almacenan automáticamente en disco utilizando el componente personalizado PersistentMap.

El sistema almacena de forma persistente:

  • Posiciones activas
  • Órdenes pendientes
  • Controles de trading por símbolo
  • Estados de gestión de riesgos

Cuando el bot se reinicia:

  1. 1.Los archivos persistentes se cargan automáticamente.
  2. 2.El estado de trading anterior se restaura en la memoria.
  3. 3.Las posiciones activas continúan siendo monitoreadas inmediatamente.
  4. 4.Las órdenes pendientes continúan rastreando el estado de ejecución del exchange.
  5. 5.Los controles de riesgo permanecen preservados.

Esto permite que el bot continúe su operación sin intervención manual después de interrupciones.

Propósito:

  • Prevenir la pérdida de seguimiento de las posiciones abiertas
  • Preservar la continuidad del trading
  • Mantener un estado preciso de gestión de riesgos
  • Evitar entradas duplicadas después de un reinicio
Persistence System Example

Estructura de la Base de Datos

La capa de persistencia utiliza un almacenamiento ligero basado en archivos locales construido sobre la serialización pickle de Python.

Cada estructura persistente se almacena en un archivo independiente:

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

La arquitectura es intencionalmente minimalista y optimizada para sistemas de trading de baja latencia.

Posiciones Activas

Almacena las operaciones actualmente abiertas.

Cada posición contiene:

  • Símbolo de trading
  • Lado de la posición
  • Cantidad
  • Precio de entrada
  • Precio de stop loss
  • Precio de take profit
  • Estado del trailing stop
  • Marca de tiempo

Propósito:

  • Reanudar la gestión de posiciones después de un reinicio
  • Continuar la lógica de stop loss y trailing
  • Preservar el estado exacto de la entrada

Órdenes Pendientes

Almacena las órdenes del exchange que esperan confirmación de ejecución.

Cada orden contiene:

  • Símbolo
  • Lado de la orden
  • Tipo de orden
  • Cantidad
  • ID de orden del exchange
  • Estado actual

Propósito:

  • Prevenir órdenes duplicadas
  • Continuar monitoreando el estado de ejecución del exchange
  • Recuperar flujos de órdenes incompletos

Controles de Símbolo

Almacena los permisos de trading en tiempo de ejecución y los estados de protección.

Cada símbolo puede contener:

  • Estado de compra habilitada
  • Estado de venta habilitada
  • Razones de deshabilitación
  • Estados de bloqueo por riesgo

Propósito:

  • Preservar las restricciones de riesgo automatizadas
  • Prevenir la reactivación accidental después de un reinicio

Lógica de Recuperación ante Fallos

El sistema de persistencia está diseñado para la recuperación automática durante:

  • Fallos de procesos
  • Reinicios del servidor
  • Fallos de VPS
  • Cortes de energía
  • Excepciones inesperadas

Persistencia Asíncrona

Todas las escrituras se procesan en un hilo de fondo dedicado.

Características:

  • Ejecución de trading no bloqueante
  • Guardado automático continuo
  • Programación de guardado basada en colas

Propósito:

  • Prevenir retrasos en el trading causados por operaciones de disco.

Guardado Atómico de Archivos

El sistema utiliza el reemplazo atómico de archivos para la máxima seguridad de los datos.

Flujo de guardado:

  1. 1.Los datos se escriben en un archivo temporal .tmp.
  2. 2.El archivo temporal se completa por completo.
  3. 3.El archivo se renombra atómicamente al archivo de persistencia final.

Propósito:

  • Prevenir la corrupción de archivos de persistencia durante fallos o escrituras interrumpidas.

Desduplicación de Guardado

La cola de persistencia elimina automáticamente las solicitudes de guardado obsoletas.

Comportamiento:

  • Solo se persiste el estado más reciente.
  • Se omiten las escrituras en disco redundantes.

Propósito:

  • Reducir el uso de disco
  • Mejorar el rendimiento bajo alta frecuencia de actualización

Recarga Automática de Estado

Durante el inicio:

  1. 1.Se detectan los archivos de persistencia.
  2. 2.Los objetos serializados se cargan de nuevo en la memoria.
  3. 3.El motor de trading reanuda el monitoreo inmediatamente.

Si los archivos de persistencia no existen:

  • Se inicializa automáticamente un nuevo almacenamiento limpio.

Seguridad en Hilos

El motor de persistencia utiliza bloqueos de sincronización internos durante las operaciones de guardado.

Características:

  • Escrituras concurrentes seguras
  • Acceso multi-hilo seguro
  • Reemplazo de archivos protegido

Propósito:

  • Asegurar la consistencia entre los hilos de trading y la capa de persistencia

Protección de Apagado Graceful

Antes del apagado:

  1. 1.Se fuerza una operación de guardado final.
  2. 2.La cola de guardado se vacía por completo.
  3. 3.El hilo de persistencia en segundo plano se detiene de forma segura.

Propósito:

  • Garantizar que el último estado de trading se escriba en el disco antes de salir.