Шесть ошибок, которые делает почти каждый первый торговый бот
Это одни и те же шесть каждый раз, каждой дёшево избежать, и каждую обычно обнаруживают дорогим способом.
Инженеры Vizanix · об авторе
- РАЗДЕЛ
- Зачем и когда
- ОПУБЛИКОВАНО
- 2026-08-30
- ГЛАВ
- 7
- ЧИТАТЬ ДАЛЬШЕ
- 3
- ЯЗЫК
- написано на русском
Мы часто оказываемся вторым разработчиком в системе. Дефекты группируются, и одни и те же шесть составляют большую часть находок.
1. Издержки применены постфактум
Бэктест считает P&L и вычитает комиссии в конце. Это не то же самое, что применить их внутри решения, потому что издержки меняют то, какие сделки вообще происходят. Стратегия со средним преимуществом ниже издержек round-trip не должна была совершать эти сделки — а когда их убрать, оставшаяся стратегия оказывается другой и гораздо меньшей.
Лечение: издержка попадает во входной фильтр, а не в отчёт. Однострочная версия — калькулятор безубытка.
2. Доверие локальному состоянию
Бот держит позицию в памяти или в JSON-файле и считает это истиной. Потом он перезапускается или обрывается WebSocket, и биржа знает то, чего не знает бот.
Лечение: источник истины — биржа. Локальное состояние — кэш, который может врать. Сверяться при каждом переподключении и каждом старте, до возобновления торговли; см. машину состояний ордера.
3. Объём от баланса вместо стопа
«Использовать 5% счёта» даёт совершенно разный риск в зависимости от того, где стоит стоп. Те же 5% — это маленький риск при стопе в 0,5% и огромный при стопе в 10%, и стратегия понятия не имеет, какой из них только что взяла.
Лечение: риск в деньгах, делённый на расстояние до стопа. Постоянный риск между инструментами и режимами волатильности. См. расчёт объёма позиции.
4. Нет kill switch или он ни разу не нажимался
Спросите про любого бота: если он прямо сейчас начнёт вести себя неправильно, через сколько счёт будет во флэте? Если ответ включает SSH, чтение кода или ручную отмену ордеров в интерфейсе биржи, эта длительность и есть ваша настоящая подверженность риску.
Лечение: одна команда, снимающая всё и закрывающая позиции, с высшим приоритетом запросов, доступная с пульта, идемпотентная и проверенная на testnet до выхода в бой.
5. Тихий отказ
Самое опасное состояние — бот, который выглядит работающим и не торгует. Процесс поднят, в логах ничего тревожного, а WebSocket умер сорок минут назад.
Лечение: измеряйте живость по входящим данным, а не по состоянию процесса. Выдавайте положительный heartbeat и алертите на его отсутствие. Логируйте отрицательные события — почему сигнал не сработал, — чтобы «ничего не делает» отличалось от «сломан». См. мониторинг.
6. Платформа раньше бота
Самая дорогая ошибка и наименее техническая. На шестой неделе проекта есть плагинная архитектура, DSL для стратегий, абстракция над несколькими биржами и дашборд — и ни один ордер ни разу не был поставлен.
Лечение: одна стратегия, один рынок, работает на testnet, на первой неделе. Обобщать потом, вокруг реальной работающей вещи. Каждая абстракция, построенная до появления рабочего случая, — это догадка о требованиях, которых у вас ещё нет.
Общая закономерность
Пять из шести — это одна и та же ошибка в разной одежде: оптимизм насчёт случаев, которые вы не проверяли. Счастливый путь прост и получает всё внимание. Пути отказа — там, где деньги, и писать их скучно.
Статья описывает инженерную практику. Это не инвестиционная рекомендация. Vizanix разрабатывает программное обеспечение и не обещает торговую доходность.