Надёжный бот — это не один скрипт с условием buy/sell, а несколько независимых модулей с понятными контрактами и защитой от ошибок.
01Коннектор к бирже
Коннектор отвечает за авторизацию, получение рыночных данных, отправку и отмену ордеров. Остальная система не должна зависеть от деталей конкретного API.
- Повтор запросов с ограничением
- Синхронизация времени
- Проверка статуса ордера
- Защита ключей API
02Стратегия и данные
Стратегия получает нормализованные данные и возвращает намерение: войти, выйти или ничего не делать. Она не должна самостоятельно отправлять ордер.
Такую логику проще тестировать на истории и переносить между биржами.
03Риск-модуль важнее сигнала
Перед исполнением риск-модуль проверяет размер позиции, дневной лимит потерь, доступный баланс и конфликтующие ордера.
Kill switch должен уметь закрыть или остановить систему при потере данных, аномальном количестве заявок или превышении лимита.

04Журналирование и мониторинг
Бот обязан объяснять каждое действие. Записывайте входные данные, рассчитанный сигнал, решение риск-модуля, запрос к API и ответ биржи.
Уведомления нужны не на каждую сделку, а на события, требующие вмешательства.
05Ордер — это процесс, а не одна команда
После отправки заявка может быть принята, частично исполнена, отклонена или отменена. Исполняющий модуль хранит это состояние и обновляет его по событиям биржи, а не предполагает, что запрос автоматически превратился в позицию.
Клиентский идентификатор связывает намерение стратегии с конкретным ордером. Благодаря этому после перезапуска можно восстановить контекст и не отправить заявку повторно.
- Уникальный идентификатор каждой заявки
- Обработка частичного исполнения
- Сверка локальной позиции с биржей
- Отдельная логика отмены и замены
06Как выпускать бота без ночных сюрпризов
Конфигурацию, секреты и код разделяют. API-ключи не хранят в репозитории, параметры риска имеют безопасные значения по умолчанию, а запуск с пустой конфигурацией должен завершаться явной ошибкой.
Перед реальной торговлей полезен режим, который проходит весь путь сигнала и подготовки ордера, но не отправляет его на биржу. Затем подключают тестовую среду или минимальный объём и сравнивают журналы с ожидаемым сценарием.
Обновление разворачивают так, чтобы можно было быстро вернуться к предыдущей версии. У бота должен быть один понятный канал состояния: работает ли поток данных, когда пришёл последний сигнал и почему новая заявка разрешена или заблокирована.

07Перезапуск не должен менять позицию
После сбоя бот начинает не с пустой памяти, а со сверки. Он получает открытые ордера, фактическую позицию и последние сделки с биржи, затем сравнивает их с сохранённым состоянием. До завершения сверки новые сигналы блокируются.
Состояние стратегии и состояние счёта — разные вещи. Сигнал мог быть рассчитан, но ордер ещё не отправлен; ордер мог быть принят, но исполнен частично. Явная модель этапов не позволяет после перезапуска случайно удвоить позицию или отменить заявку, которой уже нет.
Для проверки восстановления полезны сценарные тесты: завершить процесс сразу после отправки запроса, во время частичного исполнения и перед записью результата в журнал. Цель — убедиться, что повторный запуск всегда приходит к тому же факту, который видит биржа.
08Что тестировать до доступа к деньгам
Чистые функции стратегии проверяют на небольших заранее известных наборах данных. Контрактные тесты коннектора подтверждают формат запросов и ответов, а сценарные тесты проходят весь путь от котировки до решения риск-модуля. Реальный API нужен только на последнем уровне.
Отдельно моделируют ошибки: пустой стакан, отклонённый ордер, лимит запросов, разрыв WebSocket и неверное время. Тест считается полезным, если проверяет не только сообщение об ошибке, но и итоговое состояние — например, что новый ордер не появился и оператор получил понятное уведомление.
Наконец, бот несколько дней работает в режиме наблюдения: считает сигналы и будущие заявки, но не отправляет их. Это позволяет увидеть частоту решений, нагрузку на API и качество журналов без финансового риска.
- Модульные тесты расчётов
- Контрактные тесты API
- Сценарии отказов и восстановления
- Теневой режим без отправки ордеров
Материал носит информационный характер и не является индивидуальной инвестиционной рекомендацией. Торговля связана с риском потери капитала.
