Как бот защищает позицию
Обновлено:
Когда спрашивают, как бот защищает позицию, ответ состоит из нескольких слоёв: защитные ордера на самой бирже, проверки перед входом, восстановление после сбоев и лимиты на риск. Ни один слой по отдельности ничего не гарантирует, но вместе они уменьшают вероятность худших сценариев. Ниже по порядку, что именно делает Snapback.
1. Перед входом: размер и плечо
Прежде чем выставить заявку, сервис считает план сделки: цену входа, объём, стоп и тейки. Все округления идут в худшую для вас сторону, поэтому реальная сделка может оказаться лучше плана, но не хуже: стоп срабатывает не позже запланированного, тейк забирает не больше запланированного.
Также проверяется плечо. Если ликвидация наступила бы раньше стопа, сделку не открывают. Подробно в статье плечо и ликвидация на фьючерсах.
Перед каждой заявкой действуют дополнительные проверки: не отключён ли бот, нет ли уже позиции по этой монете, не прошла ли пауза после предыдущей сделки, не превышены ли «Макс. одновременных позиций» и «Макс. суммарная маржа». Также проверяется «Дневной лимит убытка».
2. Вход
Бот выставляет лимитную заявку на продажу. По умолчанию это заявка «только maker» (post-only): если бы она сразу исполнилась по рынку, биржа её отклоняет, поэтому комиссия соответствует расчётной. Заявка ждёт заданное время («Ждать исполнения, секунд»). Если не исполнилась, её отменяют, и сделки нет: в списке это «отменено», причина «отменена по истечении срока».
3. Сразу после исполнения: стоп и тейки
Когда заявка на вход исполнилась (даже частично), бот ставит защиту одним набором.
- Стоп-лосс. Это условный ордер, который закрывает всю позицию (closePosition) и срабатывает по маркировочной цене. Поскольку он закрывает «всё, что есть», его не нужно пересчитывать при частичном исполнении входа или после тейков.
- Тейк-профиты. Каждый тейк — условный ордер на свою долю объёма. Последняя доля закрывает весь остаток. Если вход исполнился частично, доли тейков пропорционально пересчитываются.
- Если биржа отклонила отдельный тейк, а цена уже прошла его уровень, бот сразу закрывает эту долю по рынку, чтобы не оставить позицию с целью, до которой цена уже не дойдёт. Стоп и остальные тейки от этого не страдают.
4. Во время сделки
- Когда сработал тейк, бот фиксирует это и, если включён «Безубыток», переносит стоп: стоп в безубыток. Перенос — это отмена старого стопа и выставление нового, поэтому на мгновение стоп отсутствует.
- Когда сработал последний тейк или стоп, бот отменяет остальные ордера по монете. На фьючерсах нет автоматической связки «одно исполнилось, другое отменилось», поэтому остатки убирает сам бот.
- На каждое событие (заявка, тейк, безубыток, закрытие) приходит сообщение в Telegram, если он подключён: как подключить Telegram.
5. Если защиту поставить не удалось
Это самый опасный момент: позиция уже открыта, а защиты нет. Бот не ждёт, пока человек заметит. Он отменяет свои ордера и закрывает позицию по рынку. Причина записывается как «закрыта по рынку - не удалось защитить» (внутреннее название protection_failed). Результат такой сделки может быть и минусовым, и нулевым, и даже плюсовым, но цель здесь не прибыль, а не оставить открытый шорт без стопа.
6. Восстановление после сбоев
Сервис — это отдельный процесс, который может перезапускаться, а связь с биржей может обрываться. Поэтому он не полагается на собственную память.
- При каждом запуске сервис для каждой записанной как открытая позиции спрашивает биржу, что с ней на самом деле. Если она уже закрыта, сделку дописывают как закрытую, с фактическими ценой выхода, комиссиями и фандингом, взятыми из истории биржи. Если ещё открыта, бот подхватывает её и ставит защиту, если её нет. Если защиту поставить уже нельзя (например, цена уже за уровнем, где должен стоять стоп), позицию закрывают по рынку.
- При каждом восстановлении потока событий биржи такая сверка повторяется для вашего аккаунта: событие, случившееся между обрывом и новым соединением, могло потеряться, и позиция осталась бы без защиты до следующего перезапуска. Позиции, которые бот и так ведёт, при этом не трогают, чтобы не забыть, какие тейки уже сработали.
- Позиция без записи. Если на бирже нашли позицию, о которой сервис ничего не знает, она появляется на странице «Сделки» в блоке «Неназначенные позиции» с пометкой, есть ли стоп. Там её можно привязать к боту кнопкой «Привязать».
- Пропущенное событие закрытия. Если событие о закрытии потерялось, сервис восстанавливает сделку из истории биржи, чтобы в списке была реальная цена выхода и правильная причина, а не пустая строка.
7. Лимиты риска
- «Макс. одновременных позиций» и «Макс. суммарная маржа, % депозита» ограничивают, сколько сделок и маржи открыто одновременно.
- «Пауза по монете, мин» не даёт открывать новую сделку по той же монете сразу после предыдущей.
- «Дневной лимит убытка, %»: сервис считает реализованный результат за сутки (по UTC) вместе с комиссиями и фандингом. Если убыток достиг заданной доли депозита, ботов отключают, а ожидающие входа заявки отменяют. На странице «Боты» есть кнопка «Сбросить счётчик и запустить ботов», так что решение о возврате к торговле остаётся за вами. Нереализованный убыток открытых позиций в этот лимит не входит.
- Также существует аварийный выключатель на уровне сервиса, который запрещает новые сделки или закрывает все позиции.
Границы защиты
Честно о том, что эта защита не решает.
- Она не гарантирует цену выхода: стоп и тейки срабатывают по рынку.
- Она не работает, если недоступна сама биржа или ваш ключ отозван либо ограничен.
- Включённый бот ничего не делает, если не запущен сканер рынка: на странице «Боты» тогда видно предупреждение. Защитные ордера, которые уже стоят на бирже, продолжают действовать и без сервиса.
- Она не меняет риск стратегии: у шорта против пампа бывают убытки, и сериями.
Как читать результат уже закрытой сделки, описано в статье страница «Сделки» и причины выхода.
Частые вопросы
Что будет, если бот не смог поставить стоп-лосс?
Бот не держит позицию без защиты: он отменяет свои ордера и закрывает позицию по рынку. В списке сделок у такой сделки причина «закрыта по рынку - не удалось защитить».
Что станет с открытой сделкой, если сервис перезапустили?
При каждом запуске и после восстановления связи с биржей сервис заново сверяет свои записи с реальным состоянием на Binance: подхватывает открытые позиции, ставит защиту, если её нет, или закрывает позицию, если защиту поставить уже нельзя.
Гарантирует ли защита, что убыток не превысит стоп?
Нет. Стоп срабатывает по рынку, и при резком движении исполнение может быть хуже. Защита уменьшает риск, а не снимает его.
Можно ли остановить всех ботов сразу после большого убытка?
Есть дневной лимит убытка: когда реализованный убыток за сутки доходит до заданной доли депозита, сервис отключает ботов. После этого их нужно запускать вручную.