System trwałości

Odzyskiwanie pozycji

Silnik transakcyjny zawiera wbudowaną warstwę trwałości zaprojektowaną tak, aby przetrwać awarie, restarty i nieoczekiwane zamknięcia bez utraty krytycznego stanu transakcyjnego.

Wszystkie aktywne dane transakcyjne są automatycznie przechowywane na dysku przy użyciu niestandardowego komponentu PersistentMap.

System trwale przechowuje:

  • Aktywne pozycje
  • Oczekujące zlecenia
  • Kontrole handlowe symboli
  • Stany zarządzania ryzykiem

Po restarcie bota:

  1. 1.Pliki trwałe są automatycznie ładowane.
  2. 2.Poprzedni stan transakcyjny jest przywracany do pamięci.
  3. 3.Aktywne pozycje są natychmiast ponownie monitorowane.
  4. 4.Oczekujące zlecenia kontynuują śledzenie stanu wykonania na giełdzie.
  5. 5.Kontrole ryzyka pozostają zachowane.

Pozwala to botowi na kontynuację działania bez ręcznej interwencji po przerwach.

Cel:

  • Zapobieganie utracie śledzenia otwartych pozycji
  • Zachowanie ciągłości transakcyjnej
  • Utrzymanie dokładnego stanu zarządzania ryzykiem
  • Unikanie duplikatów wpisów po restarcie
Persistence System Example

Struktura bazy danych

Warstwa trwałości wykorzystuje lekkie, lokalne przechowywanie plików zbudowane na bazie serializacji Pythona pickle.

Każda trwała struktura jest przechowywana w niezależnym pliku:

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

Architektura jest celowo minimalistyczna i zoptymalizowana pod kątem systemów transakcyjnych o niskim opóźnieniu.

Aktywne pozycje

Przechowuje obecnie otwarte transakcje.

Każda pozycja zawiera:

  • Symbol transakcyjny
  • Stronę pozycji
  • Wielkość
  • Cenę wejścia
  • Cenę stop loss
  • Cenę take profit
  • Status trailing stop
  • Znacznik czasu

Cel:

  • Wznów zarządzanie pozycją po restarcie
  • Kontynuuj logikę stop loss i trailing
  • Zachowaj dokładny stan wejścia

Oczekujące zlecenia

Przechowuje zlecenia giełdowe oczekujące na potwierdzenie wykonania.

Każde zlecenie zawiera:

  • Symbol
  • Stronę zlecenia
  • Typ zlecenia
  • Wielkość
  • Identyfikator zlecenia giełdowego
  • Bieżący status

Cel:

  • Zapobiega duplikatom zleceń
  • Kontynuuj monitorowanie stanu wykonania na giełdzie
  • Odzyskaj niedokończone przepływy zleceń

Kontrole symboli

Przechowuje bieżące uprawnienia transakcyjne i stany ochrony.

Każdy symbol może zawierać:

  • Status włączonego kupowania
  • Status włączonej sprzedaży
  • Powody wyłączenia
  • Stany blokady ryzyka

Cel:

  • Zachowaj automatyczne ograniczenia ryzyka
  • Zapobiegaj przypadkowej reaktywacji po restarcie

Logika odzyskiwania po awarii

System trwałości jest zaprojektowany do automatycznego odzyskiwania podczas:

  • Awarii procesów
  • Restartów serwera
  • Awarii VPS
  • Przerw w dostawie prądu
  • Nieoczekiwanych wyjątków

Asynchroniczna trwałość

Wszystkie zapisy są przetwarzane w dedykowanym wątku tła.

Funkcje:

  • Nieblokujące wykonywanie transakcji
  • Ciągłe automatyczne zapisywanie
  • Planowanie zapisów oparte na kolejce

Cel:

  • Zapobiega opóźnieniom w handlu spowodowanym operacjami dyskowymi.

Atomowe zapisywanie plików

System używa atomowego zastępowania plików dla maksymalnego bezpieczeństwa danych.

Przepływ zapisu:

  1. 1.Dane są zapisywane w tymczasowym pliku .tmp.
  2. 2.Plik tymczasowy jest w pełni ukończony.
  3. 3.Plik jest atomowo zmieniany na końcowy plik trwałości.

Cel:

  • Zapobiega uszkodzeniu plików trwałości podczas awarii lub przerwanych zapisów.

Deduplikacja zapisów

Kolejka trwałości automatycznie usuwa nieaktualne żądania zapisu.

Zachowanie:

  • Tylko najnowszy stan jest utrwalany.
  • Nadmiarowe zapisy na dysk są pomijane.

Cel:

  • Zmniejsza użycie dysku
  • Poprawia wydajność przy dużej częstotliwości aktualizacji

Automatyczne przeładowanie stanu

Podczas uruchamiania:

  1. 1.Pliki trwałości są wykrywane.
  2. 2.Obiekty serializowane są ładowane z powrotem do pamięci.
  3. 3.Silnik transakcyjny wznawia monitorowanie natychmiast.

Jeśli pliki trwałości nie istnieją:

  • Nowe, czyste miejsce do przechowywania jest automatycznie inicjowane.

Bezpieczeństwo wątków

Silnik trwałości używa wewnętrznych blokad synchronizacji podczas operacji zapisu.

Funkcje:

  • Zapisy bezpieczne dla współbieżności
  • Bezpieczny dostęp wielowątkowy
  • Chronione zastępowanie plików

Cel:

  • Zapewnia spójność między wątkami transakcyjnymi a warstwą trwałości

Ochrona łagodnego zamykania

Przed zamknięciem:

  1. 1.Ostateczna operacja zapisu jest wymuszana.
  2. 2.Kolejka zapisów jest całkowicie opróżniana.
  3. 3.Wątek trwałości w tle jest zatrzymywany bezpiecznie.

Cel:

  • Gwarantuje zapisanie najnowszego stanu transakcyjnego na dysk przed wyjściem.