На главную

DF-ТРД-007 · Инструменты для трейдинга

Резервная копия журнала операций: как проверить восстановление

Редакция Deskforge · 4 ноября 2026 · 5 мин чтения
Резервная копия журнала операций: как проверить восстановление
Из статьи вы узнаете
  • Как восстановить копию отдельно от рабочего журнала
  • Какие записи и поля сверить после восстановления
  • Почему технической проверки базы недостаточно
  • Что записать в протокол теста

На диске лежит свежая резервная копия журнала операций. Размер файла выглядит правдоподобно, дата обновляется, ошибок не видно. Но в момент сбоя выясняется, что копия не открывается, создана другой версией программы или содержит не весь нужный период.

Проверять нужно не наличие файла, а восстановление записей из него. Безопасный тест проходит в отдельной папке, базе или тестовой среде: рабочий журнал не перезаписывают, а полученный результат сверяют с исходными данными и историей торгового счёта.

Главный критерий прост: после восстановления доступны нужные операции, их устойчивые идентификаторы, даты, объёмы и связанные записи. Одного сообщения об успешном завершении недостаточно.

Что считать успешным восстановлением?

Сначала определите, что именно входит в резервную копию. Один продукт сохраняет всю базу журнала, другой — только таблицу операций, третий не включает вложения, пользовательские заметки или настройки. Состав нужно узнать до проверки, иначе отсутствие данных можно ошибочно принять за повреждение.

Запишите ожидаемый период: время первой и последней операции, торговый счёт и число записей на момент создания копии. Если журнал хранит не только сделки, отдельно учтите пополнения, списания, комиссии, исправления и ручные записи.

Успешное открытие базы подтверждает лишь часть результата. Для SQLite команда PRAGMA integrity_check проверяет структуру страниц и записей, индексы, а также ограничения UNIQUE, CHECK и NOT NULL. Нарушения внешних ключей она не выявляет — для них предусмотрена команда PRAGMA foreign_key_check. Если ошибок не найдено, integrity_check возвращает ok.

Поэтому приёмка состоит из двух уровней: техническая целостность хранилища и содержательная сверка журнала. Если используется собственное приложение, порядок такой проверки стоит закрепить в документации на разработку журналов сделок и риск-панелей.

Как подготовить безопасный тест?

Сначала поместите резервный файл в отдельную папку и запретите тесту обращаться к рабочей базе. В названии папки укажите дату копии и дату проверки. Исходный файл оставьте без изменений, чтобы не потерять единственный экземпляр при неудачном импорте.

Версию приложения, формат копии и контрольную сумму файла лучше записать заранее. Контрольная сумма не доказывает полноту данных, но помогает установить, что повторная проверка выполнялась с тем же файлом, а не с похожей копией под тем же названием.

Для восстановления нужен предусмотренный продуктом механизм. SQLite Online Backup API копирует содержимое одной базы в другую и заменяет содержимое базы назначения, поэтому назначением должна быть тестовая база. pg_restore применяют к архивам pg_dump в форматах, отличных от обычного текстового SQL, и с его помощью реконструируют состояние базы на момент сохранения.

После запуска сохраните журнал выполнения операции. Предупреждение о несовместимой версии, пропущенной таблице или недостаточных правах может не помешать появлению части записей, но делает результат проверки сомнительным.

Какие данные сверить после запуска?

Начните с границ периода. Найдите самую раннюю и самую позднюю запись, затем сравните число операций по дням или месяцам. Такой разрез быстрее обнаруживает целиком пропущенный участок, чем просмотр общей суммы строк.

Далее проверьте устойчивые идентификаторы. В MetaTrader 5 билет сделки является уникальным идентификатором, а одной заявке могут соответствовать несколько сделок. Поэтому сравнивать только номера заявок недостаточно: частичное исполнение может восстановиться не полностью.

Сверьте время с учётом источника. В истории MetaTrader 5 время сделки указывается в часовом поясе торгового сервера брокера. Если журнал переводит его в местное время или UTC, заранее запишите правило преобразования и проверьте записи около полуночи и смены даты.

Для табличного обмена пригодится порядок из инструкции по проверке полноты CSV с торговыми операциями: сравнить границы периода, количество строк и идентификаторы. Отчёт брокера здесь служит контрольным источником для торговых операций, но не заменяет заметки и поля, которые существуют только в журнале.

Как выбрать записи для ручной проверки?

Не ограничивайтесь первой строкой. Возьмите несколько разных случаев: обычную операцию, частичное исполнение, запись с комиссией, переход через границу суток и последнюю операцию перед созданием копии. Если журнал разрешает ручное редактирование, добавьте запись с заметкой или категорией.

Для каждого примера сравните идентификатор, счёт, инструмент, направление, объём, цену, время и связанные расходы. Проверяйте не только отображение на экране, но и экспорт из восстановленной версии: иногда данные сохранены, однако отдельные поля не попадают в отчёт.

Отдельно поищите дубли. Повторный импорт после восстановления способен создать вторую копию тех же операций, если приложение не распознаёт уже существующие идентификаторы. Порядок поиска разобран в статье о дублях торговых операций.

Завершите тест созданием новой записи в изолированной среде, перезапуском приложения и повторным открытием журнала. Это покажет, что восстановленная база не только читается, но и продолжает сохранять изменения в ожидаемом формате.

Что записать в протокол теста?

Короткий протокол должен содержать имя резервного файла, контрольную сумму, версии программы и базы, место тестового восстановления, проверенный период и результат каждой сверки. Вместо общей отметки об успехе укажите, сколько записей ожидалось и сколько найдено, какие идентификаторы проверены вручную.

Если обнаружено расхождение, не заменяйте рабочие данные восстановленной копией. Сохраните копию, журнал выполнения и перечень отсутствующих либо повторных записей. По ним можно отделить дефект резервного файла от ошибки импорта или отображения.

Повторяйте проверку после изменения формата хранения, обновления механизма резервирования и по внутреннему графику. Частоту определяет допустимый объём потери данных: если журнал пополняется ежедневно, редкий тест может слишком поздно обнаружить непригодную цепочку копий.

Источники


Материал носит информационный характер и описывает разработку и проверку программных инструментов. Он не является индивидуальной инвестиционной рекомендацией и не содержит предложения совершить сделку. Deskforge не является брокером, дилером, управляющей компанией или инвестиционным советником, не управляет средствами клиентов и не совершает сделок за них. Торговля на финансовых рынках связана с риском потери капитала; результаты тестирования на исторических данных и прошлые результаты не гарантируют будущих. Решение о сделках пользователь принимает самостоятельно.

Назад

Deskforge на связи

Где нас найти

Нажмите на карточку или наведите камеру на QR-код.