Система збереження

Відновлення позицій

Торгове ядро включає вбудований рівень збереження, призначений для виживання після збоїв, перезапусків та непередбачених відключень без втрати критичного торгового стану.

Усі активні торгові дані автоматично зберігаються на диску за допомогою кастомного компонента PersistentMap.

Система постійно зберігає:

  • Активні позиції
  • Ордери в очікуванні
  • Елементи управління торгівлею символів
  • Стани управління ризиками

Коли бот перезапускається:

  1. 1.Файли збереження завантажуються автоматично.
  2. 2.Попередній торговий стан відновлюється в пам'ять.
  3. 3.Моніторинг активних позицій продовжується негайно.
  4. 4.Ордери в очікуванні продовжують відстежувати статус виконання на біржі.
  5. 5.Контроль ризиків залишається збереженим.

Це дозволяє боту продовжувати роботу без ручного втручання після перерв.

Мета:

  • Запобігти втраті контролю над відкритими позиціями
  • Зберегти безперервність торгівлі
  • Підтримувати точний стан управління ризиками
  • Уникнути дублювання входів після перезапуску
Persistence System Example

Структура бази даних

Рівень збереження використовує легке локальне файлове сховище, побудоване на основі серіалізації Python pickle.

Кожна структура збереження зберігається в незалежному файлі:

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

Архітектура навмисно мінімалістична та оптимізована для торгових систем з низькою затримкою.

Активні позиції

Зберігає поточні відкриті угоди.

Кожна позиція містить:

  • Торговий символ
  • Сторона позиції
  • Кількість
  • Ціна входу
  • Ціна стоп-лоссу
  • Ціна тейк-профіту
  • Статус трейлінг-стопу
  • Часова мітка

Мета:

  • Відновити управління позицією після перезапуску
  • Продовжити логіку стоп-лоссу та трейлінгу
  • Зберегти точний стан входу

Ордери в очікуванні

Зберігає біржові ордери, що очікують підтвердження виконання.

Кожен ордер містить:

  • Символ
  • Сторона ордера
  • Тип ордера
  • Кількість
  • ID ордера на біржі
  • Поточний статус

Мета:

  • Запобігти дублюванню ордерів
  • Продовжити моніторинг стану виконання на біржі
  • Відновити незавершені потоки ордерів

Елементи управління символами

Зберігає дозволи на торгівлю під час виконання та стани захисту.

Кожен символ може містити:

  • Статус увімкнення покупок
  • Статус увімкнення продажів
  • Причини вимкнення
  • Стани блокування ризику

Мета:

  • Зберегти автоматичні обмеження ризику
  • Запобігти випадковій реактивації після перезапуску

Логіка відновлення після збоїв

Система збереження призначена для автоматичного відновлення під час:

  • Збоїв процесів
  • Перезапусків сервера
  • Збоїв VPS
  • Відключень електроенергії
  • Несподіваних винятків

Асинхронне збереження

Усі записи обробляються у виділеному фоновому потоці.

Особливості:

  • Неблокуюче виконання торгів
  • Безперервне автоматичне збереження
  • Планування збережень на основі черги

Мета:

  • Запобігти затримкам торгівлі, спричиненим дисковими операціями.

Атомарне збереження файлів

Система використовує атомарну заміну файлів для максимальної безпеки даних.

Потік збереження:

  1. 1.Дані записуються в тимчасовий файл .tmp.
  2. 2.Тимчасовий файл повністю завершується.
  3. 3.Файл атомарно перейменовується в кінцевий файл збереження.

Мета:

  • Запобігти пошкодженню файлів збереження під час збоїв або перерваних записів.

Дедуплікація збережень

Черга збереження автоматично видаляє застарілі запити на збереження.

Поведінка:

  • Зберігається лише найновіший стан.
  • Надлишкові записи на диск пропускаються.

Мета:

  • Зменшити використання диска
  • Покращити продуктивність при високій частоті оновлень

Автоматичне перезавантаження стану

Під час запуску:

  1. 1.Файли збереження виявляються.
  2. 2.Серіалізовані об'єкти завантажуються назад у пам'ять.
  3. 3.Торгове ядро негайно продовжує моніторинг.

Якщо файли збереження не існують:

  • Автоматично ініціалізується нове чисте сховище.

Потокобезпека

Рушій збереження використовує внутрішні блокування синхронізації під час операцій збереження.

Особливості:

  • Паралельно-безпечні записи
  • Безпечний багатопотоковий доступ
  • Захищена заміна файлу

Мета:

  • Забезпечити узгодженість між торговими потоками та рівнем збереження

Захист при безпечному завершенні роботи

Перед завершенням роботи:

  1. 1.Примусово виконується фінальна операція збереження.
  2. 2.Черга збереження повністю очищається.
  3. 3.Фоновий потік збереження безпечно зупиняється.

Мета:

  • Гарантувати, що найновіший торговий стан записано на диск перед виходом.