28 Сентября 2026 · исследования

Ваша бумажная стратегия перезапустилась с другой позицией: письмо о восстановлении состояния

Ваша бумажная стратегия перезапустилась с другой позицией: письмо о восстановлении состояния

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

Возможно. Но сперва проверьте, знает ли перезапущенный процесс то же, что и бумажный счёт. Перезапуск — это задача восстановления состояния: позиции, денежные средства, открытые ордера и любые данные стратегии, влияющие на следующее решение, должны совпадать. Снова запустить код — самая простая часть.

Что стратегия считала верным до сбоя?

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

Допустим, ваша часовая стратегия покупает 1 единицу, когда сигнал тренда становится положительным, а затем держит её, пока сигнал не станет отрицательным. В 14:00 процесс отправляет ордер на покупку, но аварийно завершается до того, как успевает записать, что ордер принят. Бумажная торговая площадка исполняет ордер. После перезапуска стратегия не видит записанной позиции, а сигнал всё ещё положительный, поэтому отправляет ещё один ордер на покупку. Сигнал работает последовательно. У стратегии устарели данные о том, чем владеет счёт.

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

Какое состояние нужно сохранять при перезапуске?

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

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

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

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

Присваивайте каждому ордеру постоянный client ID, сформированный на основе запуска стратегии и решения, которое привело к его созданию. Если процесс повторяет запрос после тайм-аута, он сможет проверить, создал ли этот шаг уже ордер, вместо того чтобы размещать дубликат. Записывайте изменения состояния только после подтверждения соответствующего события на счёте и сохраняйте ID ордеров и исполнений, объясняющие эти изменения.

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

Ведите журнал восстановления: последнее обработанное событие, время снимка счёта, статусы открытых ордеров, восстановленная версия стратегии и первое решение после перезапуска. Так фраза «процесс снова запустился» превратится в событие, которое можно проверить.

Чему можно доверять после перезапуска?

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

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

бумажная торговлясостояние стратегиивосстановлениебэктестинг
ПоделитьсяXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Все статьи