ShortSignalBot
Автономная торговая система для рынка криптовалютных бессрочных фьючерсов, которая в реальном времени сканирует весь рынок, выявляет аномальные ценовые импульсы по многоступенчатой модели технического анализа и самостоятельно открывает и сопровождает позиции на бирже без участия оператора. Система объединяет рыночный сканер, движок автоторговли, мониторинг открытых сделок, Telegram-интерфейс управления и веб-панель оперативного контроля в едином сервисе с круглосуточным циклом работы.
Задача
Требовалось превратить набор ручных торговых правил в полностью автоматизированный продукт промышленного уровня. Трейдер физически не способен одновременно отслеживать сотни торговых пар, в секундах рассчитывать по каждой комплекс индикаторов и мгновенно реагировать на сигнал входа. Ключевые требования к системе были такими:
- покрыть весь рынок бессрочных фьючерсов, а не выборку из нескольких пар
- считать технический анализ по каждому инструменту с нуля, без зависимости от платных сторонних сервисов сигналов
- адаптировать стратегию под текущий режим рынка, а не работать по статичным порогам
- исполнять сделки автоматически с управлением риском на каждую позицию
- дать конечному пользователю простое управление через Telegram и прозрачный контроль состояния через веб-панель
- оставаться расширяемой под подключение новых бирж без переписывания ядра
Решение
Реализован непрерывный фоновый цикл сканирования, который проходит весь список USDT-инструментов и пропускает каждый через воронку фильтров, отсекающую шум и оставляющую только качественные сетапы. Сначала отсев по суточному объему ликвидности, затем детектор импульса по свечам, далее проверки перекупленности по индикаторам, дистанции до локального максимума и возраста листинга, и в конце защитный фильтр состояния BTC, который блокирует входы при слабости всего рынка.
Поверх этого построен движок определения рыночного режима: система отдельно анализирует двести наиболее ликвидных активов, вычисляет долю растущих и классифицирует рынок на три состояния. От текущего режима динамически зависят пороги импульса, размер позиции, плечо и расчет стоп-лосса с тейк-профитом. По валидному сигналу запускается движок автоторговли, который рассчитывает объем позиции как процент от баланса, выставляет ордер, фиксирует параметры риска и сохраняет сделку. Отдельный сторожевой процесс с защитой от параллельного запуска опрашивает открытые позиции и автоматически закрывает их при достижении уровней риска.
Управление вынесено в Telegram-бота с inline-клавиатурой: пользователь привязывает биржевые ключи, переключает боевой и тестовый режим, включает автоторговлю и видит сводку по PnL. Для оперативного контроля сделана веб-панель на real-time канале, куда мгновенно транслируются логи сканирования, изменения позиций и агрегированная статистика.
Архитектура и сложности
Мультибиржевой слой абстракции. Все биржи скрыты за единым абстрактным контрактом, а конкретные интеграции подключаются через фабрику по настройке. Это позволяет менять торговую площадку без изменения бизнес-логики и добавлять новую биржу как изолированный адаптер.
Подписанные приватные запросы. Торговые вызовы требуют криптографической подписи HMAC-SHA256, точной серверной метки времени и окна валидности. Отдельно решена проблема расхождения локального и биржевого времени через синхронизацию смещения, без которой подписанные запросы отклоняются биржей.
Индикаторы с нуля. Money Flow Index, RSI, Stochastic RSI, ATR, Volume Spike, определение локального максимума, кластеризация уровней поддержки и сопротивления по экстремумам, а также расчет умных уровней стоп-лосса и тейк-профита с гарантированным минимальным соотношением риска к прибыли. Stochastic RSI реализован в один проход со сглаживанием, чтобы не пересчитывать RSI на каждом окне.
Адаптивная стратегия вместо статичных правил. Самое сложное было не в отдельной формуле, а в связной системе режимов, где десятки параметров переключаются согласованно в зависимости от состояния рынка, включая смену направления сделки с шорта на лонг в сильном растущем тренде.
Устойчивость к сбоям. Внешние API нестабильны, поэтому сетевые вызовы, парсинг ответов и обработка каждого инструмента изолированы так, что падение по одной паре не останавливает весь цикл сканирования. Между запросами выдержаны паузы под лимиты бирж.
Доставка в реальном времени. Веб-панель получает обновления по постоянному соединению с бинарной сериализацией сообщений, что дает задержку и компактный трафик при частых апдейтах логов и позиций.
Хранилище и схема. Доступ к данным построен на типобезопасном ORM поверх реляционной базы, схема создается и обновляется автоматическим мигратором по моделям, что упрощает развертывание и эволюцию структуры данных.
Безопасность периметра. Вход защищен ограничителем частоты запросов против перебора, пароли хранятся в виде соли и хэша, веб-интерфейс настроек скрыт за неочевидными маршрутами.
Результат
- Полное покрытие рынка: за один цикл анализируются сотни торговых пар вместо ручного наблюдения за единицами инструментов.
- Время реакции от появления сигнала до открытия сделки сокращено до десятков секунд при цикле сканирования около минуты, тогда как ручной анализ того же объема занимал бы часы и был практически невыполним.
- Восемь собственных индикаторов и семиступенчатая воронка фильтрации полностью устранили зависимость от платных внешних поставщиков сигналов.
- Три адаптивных рыночных режима автоматически перенастраивают агрессивность стратегии без вмешательства оператора.
- Достигнута круглосуточная автономная работа: обнаружение сигнала, исполнение, сопровождение и закрытие позиции по риску проходят без ручных действий.
- Архитектура с единым биржевым контрактом превратила подключение новой площадки в изолированную задачу, не затрагивающую ядро системы.
- Управление и контроль доведены до уровня, при котором конечный пользователь работает со сложной торговой машиной через несколько кнопок в Telegram и наглядную панель в реальном времени.
Стек
.NET 10, C#, ASP.NET Core, Razor Pages, SignalR с бинарным протоколом MessagePack, linq2db, SQL Server, Quartz.NET, HMAC-SHA256, REST API бирж BingX и Bybit, Telegram Bot API, MailKit и MimeKit, фоновые сервисы и асинхронная обработка, паттерны Abstract Base и Factory, собственный авто-мигратор схемы, rate limiting и хэширование паролей с солью.
