Содержание статьи

Доказательства и область применения

Sierra Chart описывает Numbers Bars и диагональные сравнения объёмов bid/ask. Классификация TradingView по направлению внутрибарной цены не равна автоматически биржевой метке агрессора. Bybit даёт пример поля стороны тейкера — участника, забирающего ликвидность. Прибыльность предложенного порога 3× здесь не подтверждена. [1] [2] [3]

Данные и рынкиНужны исполненные сделки с временем, ценой, размером и документированной стороной либо явно обозначенная оценка по внутрибарным данным. Снимки ожидающих заявок в стакане — другие данные, не замена истории исполнений.
Таймфреймы исследованияДля дневных и внутридневных версий требуются отдельные тесты. Длительность временных окон, указанная в этой статье, относится к исследовательским условиям, а не к оптимизированным рекомендациям.
Шесть синтетических ценовых строк содержат три соседних дисбаланса ask: 120, 80 и 40 сравниваются по диагонали с объёмами bid 40, 20 и 10, выполняя порог отношения 3× и минимум 30 единиц.Открыть иллюстрацию в полном размере
Авторская синтетическая иллюстрация. Шесть синтетических ценовых строк содержат три соседних дисбаланса ask: 120, 80 и 40 сравниваются по диагонали с объёмами bid 40, 20 и 10, выполняя порог отношения 3× и минимум 30 единиц.

Практическая последовательность действий

Порядок действий: Дисбаланс Footprint: диагональные сравнения и соседние уровни
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Проверка семантики фидаРазличайте сторону тейкера и оценку по направлению цены.
  2. Агрегируйте исполненные сделкиИспользуйте сетку с фиксированными ценами и удалите повторяющиеся сделки.
  3. Сравните по диагоналиСохраните правило соотношения, правило минимального значения количества и правило нулевого знаменателя.
  4. Подтвердите поведение цены.Для продолжения и срыва движения используйте отдельные автоматы состояний.
  5. Повтор реалистичного исполненияУчитывайте время получения данных и возможные цены исполнения.

Прежде чем интерпретировать цвета, разберитесь в надписях.

Объём ask обычно означает сделки, инициированные покупателями по ask; объём bid — сделки продавцов по bid. Если биржа даёт поле стороны тейкера, следуйте его схеме. Для классификации по котировкам или тиковому правилу сохраняйте метод и категорию «неизвестно». В изученном источнике Bybit publicTrade.S обозначает сторону тейкера, который может быть покупателем или продавцом. [3]

Footprint в TradingView классифицирует наблюдения по направлению цены внутри бара, а доступная детализация исторических данных может различаться. [2] Поэтому метки buy и sell не обязательно измеряют одно и то же на разных платформах. Зелёная свеча с отрицательной классифицированной дельтой не обязательно ошибочна: движение от открытия до закрытия и суммы исполнений с учётом знака отвечают на разные вопросы.

Footprint показывает совершённые сделки. Он не раскрывает все ожидающие заявки, очередь перед ордером или скрытую ликвидность без исполнения. Кластер агрессивных покупок может встретить достаточно пассивных продаж, чтобы остановить цену. Для вывода о продолжении или неудаче нужна последующая реакция цены.

Разделяйте диагональные сравнения и отношения в одной строке

В диагональном сравнении Sierra Chart объём по ask на цене p сравнивается с объёмом по bid на соседней более низкой цене; объём по bid на p — с объёмом по ask на более высокой цене. [1] В этой статье используются строки шириной в один тик; бычий дисбаланс определяется, когда ask[p] не меньше 3×bid[p−tick], ask[p] составляет не менее 30 единиц, а знаменатель bid положителен.

Три соседние подходящие строки образуют предлагаемый стек дисбаланса. Отношение, минимум объёма и длина серии — исследовательские настройки, не универсальные константы. Укажите единицу количества: 30 фьючерсных контрактов, акций или единиц криптовалюты имеют разный экономический смысл.

При нулевом встречном знаменателе версия записывает отдельное состояние, не считая отношение бесконечным автоматически. Платформа, допускающая нулевой знаменатель, задаёт другую версию. Проверяйте её отдельно с явным минимумом торгового объёма, чтобы малая одиночная сделка не создала чрезмерный сигнал.

Последовательные — это смежные строки цен на фиксированной сетке. Отсутствующие или пустые строки нельзя удалить до поиска серий, поскольку это может создать впечатление, что разделенные дисбалансы накладываются друг на друга. Сохраните сетку и определите, нужна ли соседняя строка для самой высокой или самой низкой строки за пределами отображаемого диапазона баров.

for p in ordered_price_rows(closed_bar):
    a = ask_volume.get(p, 0)
    b = bid_volume.get(p-tick, 0)
    eligible[p] = b > 0 and a >= 30
    buy_imbalance[p] = eligible[p] and a >= 3*b
runs = consecutive_true_rows(buy_imbalance)
stack = first((run for run in runs if len(run) >= 3), default=None)
if stack is not None:
    zone_low, zone_high = row_bounds(stack)
    signal_available_at = closed_bar.received_at

Шестистрочный расчет и недействительный кластер

Синтетические строки содержат объёмы bid/ask: 40/10 на 100.00, 20/120 на 100.25, 10/80 на 100.50, 12/40 на 100.75, 9/15 на 101.00 и 8/10 на 101.25. Объём ask 120 на 100.25 сравнивается с bid 40 на 100.00, давая 3×. Ask 80 сравнивается с bid 20, давая 4×; ask 40 с bid 10 также даёт 4×.

Три соседние строки проходят и отношение, и минимум 30 единиц. Объём ask 15 на 101.00 не проходит минимум, даже если меньший знаменатель дал бы большое отношение. На рисунке именно эти значения, чтобы стек можно было проверить вручную.

Пример неудачи: стек агрессивных покупок прямо под сопротивлением, цена не закрывается выше него, а следующий бар уходит ниже кластера. Это совместимо с поглощением, но footprint не раскрывает личность пассивного продавца и не гарантирует разворот.

Отображаемое сравнение 300% представляет собой отношение двух определенных объемов, а не вероятность успеха 75%. Преобразование отношения в вероятность совершения сделки потребовало бы независимой оценки условного распределения результатов и его неопределенности.

Продолжению и срыву движения нужны разные автоматы состояний

Предлагаемый лонг на продолжение требует пробоя заранее зафиксированного уровня, закрытия выше области и допустимого стека покупок. Ждите первый ретест в пределах пяти баров, удержавший zone_low, затем закрытие выше максимума бара ретеста. Входите при следующей возможности исполнения, стоп ставьте ниже zone_low с заданным буфером. Отменяйте кандидата при закрытии ниже zone_low до подтверждения.

Шорт на срыве движения требует стека покупок у сопротивления, закрытия обратно ниже области и пробоя минимума события. Стоп — выше максимума события. Не превращайте убыточный лонг в шорт в общей статистике, если переход, время исполнения и добавочный риск не заданы до теста.

Обе версии учитывают применимые платежи funding или стоимость займа и реалистичные исполнения. На быстром рынке ожидание завершения бара может пропустить большую часть движения. Задержка — часть метода; нельзя назначать раннее исполнение по окончательному footprint, известному лишь позднее.

Укажите, идёт зона по центрам строк или их полным границам. Для сетки с шагом один тик явно задайте края до установки стопа. Разница в четверть тика или один тик может заметно изменить кратность риска при близком стопе.

Исторические записи должны соответствовать агрегированным данным в режиме реального времени.

Храните идентификаторы последовательностей, временные метки бирж, временные метки поступлений, идентификаторы сделок и неклассифицированный объем. Удаляйте дубликаты с помощью документированного ключа и обрабатывайте исправления в соответствии с политикой обработки данных на определенный момент времени. Если в исторических данных используются одноминутные прокси-данные, а в сигналах реального времени — данные по отдельным сделкам, то наблюдения больше не будут иметь одинаковую детализацию или классификацию.

Воспроизведите данные из того же источника и используйте те же правила агрегации, прежде чем сравнивать прибыльность. Снимок глубины рынка не может точно восстановить все исполнения сделок между снимками. При возникновении разрывов в последовательности отметьте затронутые бары и примените заранее определенную политику качества, вместо того чтобы выводить недостающие стороны сделок из результата.

Число тиков на строку меняет отношения и длину стека. Зафиксируйте размер строки при создании кандидата, не выбирайте его автоматически по всей будущей выборке. Адаптивный размер требует отдельной стратегии с заданными историческим окном и задержкой доступности.

Решения с учётом сетевой задержки используют время получения. Время биржи помогает упорядочить события, но не доказывает их получение трейдером. Моделируйте задержки доставки и сообщения, пришедшие не по порядку, проверяя воспроизводимость сигнала по закрытию.

Добавляет ли стек информацию сверх большого объёма?

На одинаковых пробоях сравните отсутствие footprint-фильтра, только общий объём, только дельту и стек дисбаланса. Сохраняйте входы и выходы либо отдельно изучайте время сделки и отбор событий. Стеки часты в активных барах: проверьте вклад расположения по ценам сверх общего объёма активности.

Сообщите чистую ожидаемую доходность в формате R, процент пропущенных сделок, количество неисполненных ордеров, просадку и чувствительность к задержке и спреду. Выберите пороговые значения и минимальные объемы на обучающих данных, затем заблокируйте окончательный хронологический тест. Включите отклоненные кандидаты, чтобы снижение частоты сделок было видимым, а не скрытым.

Правильное раскрашивание синтетической таблицы подтверждает корректность арифметических вычислений и работы средства визуализации. Однако оно не подтверждает работоспособность стратегии на реальных данных транзакций. Полезным выводом является указание классификации данных, рынка, периода, затрат и условий отказа, при которых сохраняется любое наблюдаемое улучшение.

Частые ошибки

Считать зелёные ячейки гарантией роста

Агрессивные покупки могут встретить значительные пассивные продажи; реакция самой цены по-прежнему важна.

Восстанавливать весь стакан ожидающих заявок

Footprint описывает исполнения, не каждую активную заявку или место в очереди.

Тестировать приближённые данные, торговать по другому потоку

Различное разрешение и классификация могут изменять сигналы, даже если графики выглядят похожими.

Список проверки перед использованием метода

Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.

0/8 пунктов

Частые вопросы

Означает ли дисбаланс 300% вероятность выигрыша 75%?

Нет. Это сравнение двух объемных величин, а не оценка вероятности исхода.

Можно ли восстановить точный footprint из обычных OHLCV?

Нет. Это может дать приблизительное представление, но не раскрывает точное распределение цен сделок и классификацию агрессоров.

Источники исследования

Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.

  1. Numbers BarsSierra Chart. Определения объёма bid/ask и диагональных сравнений Numbers Bars. Проверено: .
  2. Volume footprint charts: a complete guideTradingView. Классификация внутрибарных ценовых направлений и ограничения, связанные с исторической детализацией. Проверено: .
  3. Public TradeBybit. ID сделок, временные метки и схема стороны тейкера; без заявлений о результативности стратегии. Проверено: .

Связанные методы

Примечание о рисках

Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.

Проверьте правила, прежде чем рисковать реальным капиталом

Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.

Скачать Backtest в App Store