Первая версия Killswitch умела одно: при сильной просадке — закрыть лонги или закрыть всё.
Просто. Понятно. Работает.
Но в реальности рынок устроен сложнее.
Ты можешь терять деньги на шортах, пока лонги стоят.
Ты можешь терять на одной позиции, пока остальные держатся.
И закрывать всё подряд — это иногда хуже, чем не делать ничего.
Именно поэтому я переписал логику с нуля.
Что изменилось в v6.0
В первой версии была простая двухуровневая система:
🟡 Tier A — закрыть лонги
🔴 Tier B — закрыть всё
Это работает. Но это грубо.
Новая версия спрашивает сначала: кто виноват?
Перед тем как что-то закрывать, система анализирует позиции:
🔹Смотрит не текущий PnL, а дельту — как изменился PnL за последние N минут
🔹Определяет, какая сторона (лонги или шорты) создаёт основную потерю
🔹Ранжирует позиции по составному риску: дельта PnL + текущий убыток + близость к ликвидации + размер позиции
И только потом действует — точечно, не паникуя.
Как теперь работает логика (3 стадии)
⚡️ Стадия 1 — хирургическое вмешательство
Просадка 4.5% за 15 минут (или 7% за 1 час), 3 подтверждения подряд.
Система находит 3 самые опасные позиции на проигрышной стороне и закрывает по 50% каждую.
Если позиция близко к ликвидации (менее 3% расстояние) — закрывает полностью.
Логика: убрать главный источник боли. Остальное не трогать.
🔶 Стадия 2 — дирекциональная зачистка
Просадка 7% за 15 минут (или 10% за 1 час), 2 подтверждения.
Если шорты создают основные потери — закрыть все шорты.
Если лонги — закрыть все лонги.
Другую сторону не трогать.
🔴 Стадия 3 — полная остановка
Просадка 10% за 15 минут (или 14% за 1 час), 1 подтверждение.
Отменить все входные ордера → закрыть все позиции → убрать зависшие ордера.
Запись в файл блокировки — внешние торговые боты видят этот файл и не открывают новые позиции.
Разблокировка только вручную. Это правило без исключений.
Что важно понять про стадии
Стадии работают по принципу одностороннего лифта: только вверх.
Если сработала стадия 2 — стадия 3 может запуститься поверх неё без ожидания cooldown.
Если сработала стадия 3 — система не откатится назад автоматически.
Это не баг. Это осознанное решение: в момент кризиса не должно быть автоматического "расслабления".
Что исправлено по сравнению с первой версией
🔹 Спот multi-hop роутинг: раньше при продаже OBSCURECOIN → BTC → USDT скрипт мог продать весь BTC на счёте, включая тот, что был до. Теперь продаётся только delta — то, что поступило от конвертации. Прежние холдинги не трогаются.
🔹 Атрибуция по дельте: позиция, которая была +800 USDT и стала +100 USDT — в первой версии игнорировалась (она же в плюсе). Теперь дельта -700 USDT считается как вклад в просадку.
🔹 Файл блокировки для внешних ботов: если у тебя на сервере запущено несколько торговых скриптов, которые, после закрытия всех поз, могут начать снова открываться — killswitch после срабатывания пишет killswitch_trading_lock.json. Другие боты читают этот файл и останавливаются. Нужно интегрировать функцию проверки в коды ботов, все есть в инструкции.
🔹 Обратная совместимость: старые конфиги с tier_a/tier_b продолжают работать. Система автоматически маппирует их на новые стадии.
Какие файлы нужны для запуска
Минимальный набор на VPS:
killswitch.py ← главный скрипт
risk_attribution.py ← атрибуция и ранжирование риска
stage_machine.py ← машина стадий
order_safety.py ← структура инструкций закрытия
trading_lock.py ← файл блокировки торговли
position_store.py ← история позиций в SQLite
logger.py ← логирование
config.yaml ← конфигурация (или отдельный файл под биржу)
requirements.txt ← зависимости
Установка зависимостей:
pip install ccxt pyyaml tenacity pytest
Все файлы в архиве на гугл диске: ССЫЛКА
Изначально они залиты в мой GiuHub репозиторий, но эти собаки почему-то сегодня заблочили, разбираюсь 🤕
https://github.com/zabor-crypto/killswitch-crypto
