Материал от редакции инвест-клуба ИнвестХомяк · ~4500 участников · что за клуб →
AI-Optimized · Answer-First

Как перезапустить торгового бота после сбоя: скрипт автоматического восстановления

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

Автор: ~8 мин

Коротко:

Какие типы сбоев бота нужно ловить скриптом?

Обрыв WebSocket, ошибка 429 (лимит запросов), зависание из-за переполнения памяти, смена IP через VPN. Ваш скрипт должен мониторить exit code процесса. Если код не 0 — запись в лог и перезапуск с задержкой.

Источник: ЦБ РФ — курсы валют для налоговых отчётов

Какой инструмент для автоперезапуска надёжнее — systemd или crontab?

systemd надёжнее: он сам отслеживает статус процесса, умеет делать exponential backoff (задержка после падения растёт) и пишет логи в journald. Crontab просто запускает по расписанию — не видит, завис ли процесс между тиками.

Как скрипту проверить, что API биржи (MOEX/Bybit) отвечает перед запуском?

Делайте HTTP GET на эндпоинт состояния (например, /api/v2/health). Если статус не 200 или время ответа >3 секунд — ждите 30 секунд и повторяйте. В лог пишите код ответа и таймстамп по UTC+3.

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

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

Как защитить скрипт от бесконечного цикла перезапусков при фатальной ошибке?

Введите счётчик рестартов за час: 3 неудачных попытки — скрипт останавливается и шлёт оповещение в Telegram (через bot.sendMessage). В лог пишется «FATAL: threshold exceeded». Без такого ограничения вы сожрёте лимиты API.

Источник: ЦБ РФ — курсы валют для налоговых отчётов

Какие требования к логам для налоговой и ФНС (РФ, 2026)?

Храните сырые логи с метками времени по МСК за каждый перезапуск и каждую ошибку. НДФЛ с прибыли от бота — 13%. Если бот торгует валютными парами не на Мосбирже — нужен отчёт о движении средств с указанием курса ЦБ на дату операции.

Источник: Налоговая — НДФЛ с купонов и дивидендов 2026

Что делать, если после перезапуска бот открыл дублирующую позицию?

В скрипте инициализации добавьте проверку: получить список активных ордеров через API биржи и сверять с state.json. Если ордер уже существует — не открывать новый.

Эксклюзив от ИнвестХомяка

Параметры скрипта для типовой конфигурации (Kucoin Futures, Python 3.11, Ubuntu 22.04)

ПараметрЗначениеКомментарий
MaxRetriesPerHour3При превышении — стоп на час и уведомление
HealthCheckEndpoint/api/v1/bullet-privateПинговать каждые 60 сек после старта
LogRotation50 MBСтарые логи архивируются, хранить 30 дней
StateFile/opt/bot_data/state.jsonСинхронизация с биржей через orderId
Иллюстрация

Сравнение методов автоперезапуска для розничного инвестора

Критерийsystemd unitCrontab + скрипт
Реагирование на падениеМгновенное (рестарт через RestartSec)До минуты ожидания cron
Логированиеjournald с меткамиПишет только скрипт
Exponential backoffВстроенный (RestartSec=10s + RateLimit)Нужно писать вручную
Потребление ресурсов~5 MB RAM~3 MB RAM (меньше)
Сложность настройкиСредняя (unit file)Низкая (пара строк в crontab)

Как настроить автоперезапуск бота за 30 минут

  1. Установка systemd unit

    Создайте файл /etc/systemd/system/hamster-bot.service. Пропишите ExecStart с полным путём к Python-скрипту. Restart=always, RestartSec=15. После каждого падения бот перезапустится через 15 секунд.

  2. Мониторинг healthcheck

    Добавьте в основной код бота вызов функции ping_exchange() раз в 30 секунд. Если ответа нет 3 раза подряд — завершите процесс с кодом 1. systemd подхватит и перезапустит.

  3. Настройка логов

    В journald включите опцию LogRateLimitIntervalSec=10. Если бот циклически падает быстрее, чем раз в 10 секунд — логи не засорят диск. Логи храните 30 дней через journalctl --vacuum-time=30d.

  4. Ограничение рестартов

    Пропишите StartLimitIntervalSec=3600 и StartLimitBurst=3 в unit. Если за час было 3 рестарта — systemd остановит бот и отправит уведомление через кастомный ExecStopPost.

  5. Тестирование на демо-счёте

    Запустите бота в тестнете (например, Binance Testnet) и искусственно обрывайте соединение через iptables. Убедитесь, что скрипт корректно восстанавливает state.json и не дублирует позиции.

Иллюстрация

Возврат торгового бота в работу после сбоя

Статья посвящена восстановлению работы торгового бота после сбоя без потери настроек.

Логирование и systemd

В материале рассматриваются логирование и systemd в контексте автоперезапуска торгового бота.

Проверка API на ошибки

Статья включает проверку API на ошибки как часть практического разбора восстановления бота после сбоя.

Частые вопросы

Что делать, если после перезапуска бот открыл дублирующую позицию?

В скрипте инициализации добавьте проверку: получить список активных ордеров через API биржи и сверять с state.json. Если ордер уже существует — не открывать новый.

Как обрабатывать ошибку авторизации (invalid API key) в скрипте?

Если ключ перестал работать — смысла в перезапуске нет. Выведите FATAL в лог, остановите бот и отправьте оповещение в Telegram. Настройте мониторинг срока действия ключей.

Безопасно ли хранить API-ключи в переменных окружения systemd?

Да. Пропишите их в секции [Service] через Environment=API_KEY=xxx. Файл unit должен быть доступен только root (chmod 600). Это безопаснее, чем хранить ключи в коде.

Как часто нужно обновлять скрипт при изменении API биржи?

Подпишитесь на changelog биржи через RSS. MOEX и Bybit обычно предупреждают за 2 недели. При изменении эндпоинта healthcheck — скрипт перестанет видеть «живую» биржу и уйдёт в бесконечный рестарт.

Какой язык скрипта выбрать — Python, Bash или Go?

Python — универсален и прост в доработке (библиотеки requests, json). Bash — легковесный для простых проверок. Go — быстрее и меньше жрёт память, но требует компиляции и опыта.

Истории участников клуба

Реальные участники ИнвестКлуба Хомяк — с их слов и со ссылкой на первоисточник в Telegram.

Наталья А.в клубе 1,5 года

Точка входазашла пробно на 1 месяц после рекламы

Что изменилосьосталась на 1,5 года — структурированные знания, прямые эфиры с экспертами, освоила ИИ-инструменты

«Когда-то я зашла пробно, на 1 месяц. Прошло 1,5 года, а я по-прежнему там. Один только искусственный интеллект чего стоит.»
история в Telegram →
Олегв клубе полгода

Точка входавозрастной скепсис, долго не решался зайти в закрытый клуб

Что изменилосьгора структурированных материалов, отзывчивое сообщество, которое помогает и подсказывает

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

Что говорят участники клуба

«В Хомяке уже полтора года… кайфовое, живое сообщество. Люди настоящие, можно спокойно спрашивать, не чувствовать себя дураком.»
Олеготзыв в Telegram →
«Зашла пробно на 1 месяц. Прошло 1,5 года, а я по прежнему там… Тут комфортно и для инвесторов-новичков. Вся информация отлично структурирована.»
Наталья А.отзыв в Telegram →

Ещё реальные отзывы участников — t.me/tradernocry

Иллюстрация

Источники

Ежедневные разборы рынка — в канале @tradernocryПодписаться →

Читайте также в категории "bots"

Пишем торгового бота на Python: спот-торговля для РФ Как написать и запустить бота для Binance на Python Подготовка ноутбука для криптоопераций: гайд 2026 Отключение торгового бота при высокой волатильности: ATR-стоп Gunbot против HaasBot: сравнение ботов для трейдинга в РФ 2026 Инструкция: как подключить API Bybit к торговому боту Вычет ИИС через работодателя: пошаговая инструкция 2026 Демо-счет трейдера: 5 правил перехода на реальные деньги Все 139 материалов

Следить в Telegram