Содержание статьи
- Доказательства и область применения
- Иллюстрация
- Процесс
- Два разных наблюдения
- Отдельные детекторы поглощения и дивергенции
- Временные метки, классификация и единицы объёма
- Синтетические примеры: прибыль при поглощении и убыток при дивергенции
- Подтверждение цены и исполнение по-прежнему имеют значение.
- Измерьте дополнительную ценность дельты
- Частые ошибки
- Практический список проверки
- Частые вопросы
- Источники исследования
Доказательства и область применения
Биржевая документация устанавливает значения полей; исследование потока заявок обеспечивает контекст. Ни один из этих источников не подтверждает прибыльность предлагаемых детекторов поглощения или дивергенции.
Практическая последовательность действий
- Проверьте лентуПроверьте сторону тейкера, единицы измерения и временные метки.
- Измерьте отдельные гипотезыВычисляйте поглощение и дивергенцию CVD раздельно.
- Дождитесь подтверждения цены.Возврат цены за уровень должен следовать за доступностью нужных признаков.
- Смоделируйте исполнение и защитуИспользуйте доступные для исполнения котировки, спред и экстремум события.
- Проверка вне выборкиСравните с вариантом только по цене и проверьте устойчивость к задержке.
Два разных наблюдения
У каждой сделки есть покупатель и продавец. Знак дельты определяется агрессивной стороной, забирающей ликвидность: объём агрессивных покупок минус объём агрессивных продаж. CVD накапливает дельту от заданной точки сброса. Поле S в публичной ленте сделок Bybit обозначает сторону тейкера [1]; одноимённое поле в ленте ликвидаций может иметь другое значение.
Гипотеза бычьего поглощения описывает существенные агрессивные продажи, сопровождающиеся ограниченным нисходящим движением. В такой ситуации CVD может сформировать гораздо более низкий минимум. Бычья дивергенция CVD, напротив, требует более низкого ценового минимума, сопровождаемого более высоким значением CVD на этом ценовом минимуме. Эти условия не взаимозаменяемы и могут противоречить друг другу.
Повторное пополнение заявок на покупку сообщает о видимой ликвидности, но не раскрывает участника. Исчезновение котировки может означать отмену или исполнение [2]. Называйте наблюдение косвенным признаком поглощения и перечисляйте измерения вместо утверждения, что определённая организация защищает цену.
Отдельные детекторы поглощения и дивергенции
Предлагаемый косвенный признак бычьего поглощения ищется возле заранее известной поддержки S. За окно W=30 секунд объём агрессивных продаж должен превышать исторический 95-й процентиль для того же времени суток; sell/(buy+sell) должен быть не менее 0.70; снижение середины спреда от начала окна — не более 0.15 от предшествующего ATR на минутных барах. Нужны достаточный суммарный объём и непрерывная лента. Эти пороги предложены для исследования.
После появления косвенного признака ждите не более K=3 завершённых минутных баров, чтобы получить закрытие выше S+buffer. Вход возможен только по котировке, доступной после этого закрытия. Защитный стоп размещается ниже минимума всего события за вычетом буфера. Медвежья версия меняет направления потока и цены на противоположные.
Для дивергенции используйте два подтверждаемых ценовых минимума с left=right=2. После подтверждения второго требуйте P2<P1−buffer и CVD(time_P2)>CVD(time_P1)+delta_min. Сравнивайте CVD в моменты именно этих ценовых минимумов, а не в двух независимо выбранных удобных минимумах CVD. Обе точки должны относиться к одному интервалу накопления между сбросами. Второй пивот доступен лишь после двух баров справа от него.
Для окна поглощения и окна возврата цены за уровень нужно правило связи. При активации кандидата сохраните исходную поддержку, начало события и минимум. Нельзя снова и снова переносить начало на последнее окно интенсивных продаж, пока наконец не появится выгодный отскок.
Неклассифицированная сделка или пропуск в ленте делает последующий CVD неполным, даже если обе конечные точки содержат числа. Пометьте накопительный сегмент как недоступный до нового сброса либо успешного восстановления по полученным данным. Сравнивайте пивоты только при полном классифицированном потоке на всём интервале между ними. Неизвестное смещение перед обоими пивотами может математически сократиться, но для этого нужны общее смещение и полные приращения; этот консервативный базовый вариант всё равно требует корректного сегмента.
on_trade(tr):
if tr.id in seen_ids: return
if tr.taker_side not in {BUY,SELL} or not valid_size_and_feed(tr):
mark_window_and_cumulative_segment_unavailable_until_reset_or_rebuild(); return
seen_ids.add(tr.id)
signed_size = (+1 if tr.taker_side == BUY else -1)*normalized_size(tr)
delta_bucket += signed_size
CVD += signed_size
on_window_close(t):
if not full_window_and_prior_baseline_available(t): return
absorption = near_frozen_support and total_size>=configured_minimum
absorption &= sell_share>=0.7 and sell_size>past_p95
absorption &= downward_excursion<=0.15*ATR_before_window
if absorption and no_active_event:
arm_reclaim_candidate(known_at=window_data_ready_at,expiry=fixed_deadline)
on_price_pivot_confirmation(p2,t):
p1 = previous_confirmed_price_low(p2)
if p1 is None or not same_cvd_reset(p1,p2): return
if missing_cvd_at_either_pivot(p1,p2): return
if not complete_classified_flow_between(p1.occurred_at,p2.occurred_at): return
if not cumulative_segment_valid(p1,p2): return
divergence = p2.price<p1.price-buffer and cvd_at(p2)>cvd_at(p1)+dmin
if divergence and no_active_event:
arm_candidate(known_at=received_confirmation_time(t))
# Unclassified trades never default to SELL; overlapping windows do not reset TTL.
Временные метки, классификация и единицы объёма
Храните время события и получения данных, идентификаторы сделок и состояние соединения. Оценка по цвету свечи или повышению цены относительно предыдущей сделки (uptick) — другой показатель; называйте его соответственно. В частности, по почти неизменной цене такая оценка не может надёжно выявить интенсивные агрессивные продажи. Не учитывайте исходные сделки и их агрегированное представление дважды.
Приведите объёмы к фиксированной единице измерения. CVD в монетах и в денежном номинале может вести себя по-разному при сильном изменении цены. Для обратных контрактов нужна собственная спецификация количества, а не универсальное умножение количества на цену. Историческая выборка для процентиля должна исключать текущее окно измерения.
CVD описывает уже исполненный агрессивный поток. Исследование OFI даёт основания учитывать также изменения котировок [3], но добавление L2 не раскрывает владельца айсберг-заявки. Статистика пополнения заявок на покупку возле S может быть полезна, однако пакетная передача данных и скрытая ликвидность делают её неполной. Сохраните это различие в названии признака и описании доказательств.
Синтетические примеры: прибыль при поглощении и убыток при дивергенции
Пусть S=100, предшествующий ATR=2 и buffer=0.10. За 30 секунд объём агрессивных покупок равен 20, продаж — 100: получаем delta−80 и долю продаж 83.3%. Историческое значение процентиля объёма продаж — 70. Середина спреда снижается с 100.10 до минимума 99.85: движение 0.25 меньше предела 0.30. Косвенный признак поглощения выполнен, хотя CVD резко падает.
Следующая цена закрытия бара — 100.20. Покупка по цене 100.25, стоп-лосс по 99.75 и целевая цена 101.25 сопряжена с риском 0.50 и вознаграждением 1.00 или 2R до вычета издержек. Если доступная котировка уже 100.60, вознаграждение до достижения этой фиксированной целевой цены снизится до 0.65, а риск возрастет до 0.85. Заранее установленное правило минимального соотношения вознаграждения и риска может отклонить вход; бэктест не может сохранить недоступную цену исполнения 100.25.
В отдельном примере убыточной дивергенции ценовые минимумы равны 100 и 99.50, а CVD−500 и −420 в пределах одной сессии. После подтверждения и возврата цены за уровень покупка исполняется по 100.15 со стопом 99.40. Цена продолжает падать; защитный ордер исполняется по 99.35, убыток составляет 0.80. Дивергенция не помешала исчезновению пассивных заявок на покупку или появлению новой волны продаж.
Подтверждение цены и исполнение по-прежнему имеют значение.
Один и тот же косвенный признак может сохраняться во многих окнах, пока цена продолжает падать. Объединяйте перекрывающиеся окна в одно событие и задайте один вход либо ограниченное число повторных входов. Отменяйте ожидающего кандидата при истечении срока, устаревании данных, чрезмерном спреде или заранее определённом дальнейшем пробое до подтверждения.
Пассивная лимитная заявка ради лучшей цены входа отличается от покупки после возврата цены за уровень. Малая вероятность исполнения и неблагоприятный отбор могут поглотить кажущееся преимущество лучшей цены. Воспроизведение истории должно проверять доступную ликвидность в момент прихода заявки на рынок, а не только касание её уровня ценой исторической сделки.
Фиксированная цель в R, известная на тот момент цель VWAP и структурная цель — отдельные варианты выхода. Утренняя сделка не может использовать итоговый VWAP всей сессии. Учитывайте комиссии, проскальзывание и funding, если позиция остаётся открытой в момент его начисления.
Измерьте величину отскока в ожидании подтверждения поворота. Визуально очевидная дивергенция может быть экономически запоздалой. Сообщайте о кандидатах, чья цель уже была достигнута до сигнала, как об упущенных возможностях, а не рассматривайте более ранний отскок как прибыль, доступную для подтвержденной стратегии.
Измерьте дополнительную ценность дельты
Контрольный вариант — возврат цены за уровень без фильтра потока при тех же ориентирах, времени и волатильности. Сравните фильтр только поглощения, только дивергенции и их сочетание. Добавление условий не обязательно повышает доходность. Показывайте число кандидатов, получивших подтверждение и исполнение, а не только долю прибыльных сделок после окончательного отбора.
Проверьте устойчивость к дополнительной задержке, например 100–500ms, если это соответствует системе; отдельно анализируйте интервалы потери соединения. Такие задержки — предлагаемые тесты, не универсальные допущения. Если издержки величиной в один спред устраняют результат, укажите эту неустойчивость.
Оценивайте торговые площадки отдельно, чтобы отличить локальный поток от сигнала, переносимого на другие площадки. Сброс CVD, задержка подтверждения пивота, перекрытие событий и оценка процентилей могут менять результат сильнее, чем внешний вид графика. Храните версии предварительной обработки и явные признаки недостаточности данных.
В тестовых сценариях следует учитывать окна с нулевым объемом, отсутствие стороны агрессора, дублирование идентификаторов сделок, сброс между точками разворота и задержку в поступлении сделок после закрытия окна. Эти случаи проверяют экономическую интерпретацию функции, а не просто то, выполняется ли арифметическая сумма без ошибок.
Частые ошибки
Объединение механизмов
Поглощение может совпадать с новым минимумом CVD; требование дивергенции может исключить предполагаемое явление.
Рассматривать одну площадку как весь рынок.
На другой торговой площадке агрессивный поток может отличаться или иметь противоположное направление.
Считать любое уменьшение объёма заявки продажей
Видимый объём заявки может исчезнуть из-за отмены; для агрессивной дельты нужны данные об исполненных сделках.
Список проверки перед использованием метода
Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.
Частые вопросы
Достаточно ли высокого торгового объёма и длинной тени свечи для доказательства поглощения?
Это лишь более слабый косвенный признак на основе OHLCV. Определение в этой статье требует классифицированного агрессивного потока и измерения движения цены.
Может ли дивергенция CVD инициировать немедленную сделку?
Это признак, а не законченная торговая система. В статье ожидают ценового сигнала, доступного в реальном времени, и отдельно задают правило входа.
Источники исследования
Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.
- Public TradeBybit. Прочитано описание стороны тейкера, времени сделки и идентификатора; это документация данных, а не стратегия. Проверено: .
- OrderbookBybit. Прочитаны описания видимого объёма, сообщений snapshot/delta и ограничений публичного стакана. Проверено: .
- The price impact of order book eventsCont, Kukanov and Stoikov. Прочитано исследование потока заявок и котировок; оно не проверяет предложенные детекторы поглощения/CVD. Проверено: .
Связанные методы
Примечание о рисках
Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.
Проверьте правила, прежде чем рисковать реальным капиталом
Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.
Скачать Backtest в App Store