Пишу сканер аномальных объёмов по MOEX. Логика простая: считаем норму объёма
для инструмента, сравниваем с текущим, превышение — сигнал. Всё работало.
Сигналы приходили, ложных было немного, я был доволен.
Потом полез в логи разбираться, почему на очевидном движении не было сигнала.
И выяснил, что система его видела. Посчитала. И сама же выбросила.
## Почему EMA казалась хорошей идеей
Норму я считал через экспоненциальную скользящую по объёму. Аргумент был
железный: рынок меняется, режимы меняются, статистика за 90 дней устаревает.
EMA подстраивается под текущий режим — если объёмы выросли в целом, порог
поднимется сам, и мы не завалим канал сигналами на ровном месте.
Звучит разумно. Так делают многие. Это и есть ошибка.
## В чём проблема
EMA обновляется той же свечой, с которой вы её сравниваете.
Прилетает аномальный объём. Система его фиксирует, но этой же свечой EMA идёт
вверх. Следующая аномальная свеча сравнивается уже с задранной нормой —
превышение меньше. Третья ещё меньше. К четвёртой-пятой свече EMA догнала
Привет, Смарт-лаб.
Запустил публичный сканер объёмов для MOEX — мониторит 570 инструментов
(акции TQBR + фьючерсы RFUD) в реальном времени и присылает сигнал когда
объём аномально вырос относительно нормы.
Как это работает:
Система строит статистику по каждому инструменту за 90 дней — отдельно по
часам и дням недели. Утренняя сессия сравнивается с утренними нормами,
вечерняя с вечерними. Праздники и выходные учитываются отдельно. Поверх
статистики работает EMA которая быстро подстраивается под текущий режим
рынка — если объёмы резко выросли из-за новостей, система адаптируется за
несколько свечей.
Таймфреймы: 1m, 5m, 1h, 4h, 1d.
Примеры сигналов за сегодня 09.06:
🛢 BRN6 (нефть Brent) — 17:32 — +870% к среднему на 1m. Объём 9000 лотов
при норме 923. Сигнал пришёл в момент резкого движения на фоне новостей
по Ирану.
📈 ASTR — весь день — +380-440% на дневном и 4-часовом таймфреймах.
Аномальный дневной объём был виден с утра.
🛢 BRQ6 — 20:29 — +613% на 1m в вечернюю сессию.