Содержание статьи
- Доказательства и область применения
- Иллюстрация
- Процесс
- Наблюдаемая кластеризация цен и гипотеза ликвидности
- Ограничьте ширину всего кластера.
- Объём у касаний: учитывайте время подтверждения
- Синтетические кластеры, сбои в цепочках и результаты торговли.
- Зона задаёт сделку лишь с отдельным триггером
- Сначала проверьте качество зон, затем доходность сделок
- Частые ошибки
- Практический список проверки
- Частые вопросы
- Источники исследования
Доказательства и область применения
Оригинальный индикатор предлагает EQH/EQL, а исследования уровней поддержки/сопротивления и документация по перерисовке обеспечивают контекст. Предложенный алгоритм онлайн-кластеризации не продемонстрировал здесь торговой прибыльности.
Практическая последовательность действий
- Подтвердите пивотыРазделяйте временные метки события и подтверждения.
- Проверьте разделение касанийТребуйте одинакового масштаба и достаточного отхода цены между касаниями.
- Проверить полную ширинуОцените весь кластер целиком, а не только его ближайшего соседа.
- Опубликовать версиюЗафиксируйте границы и момент, с которого их разрешено использовать.
- Дождитесь срабатывания триггераТестируйте снятие ликвидности и пробой независимо.
Наблюдаемая кластеризация цен и гипотеза ликвидности
Два минимума на 50 и 50.08 могут быть приблизительно равны, если нормальные колебания значительно превышают их разницу. Однако для инструмента с тиком 0.25, 50.08 не является допустимой нескорректированной ценой сделки. Детектор должен понимать ценовую сетку, прежде чем применять статистическую погрешность.
LuxAlgo показывает EQH/EQL с настраиваемым подтверждением [1]. Исследование Osler касается поддержки/сопротивления в собственной эмпирической области [2]. Ни один источник не устанавливает универсальную долю выигрышных сделок для двух близких пивотов. Здесь строится потоковый генератор опорных зон для последующих исследований снятия ликвидности или пробоя.
Два похожих максимума не являются автоматически двойной вершиной. Для формирования паттерна разворота также необходим предшествующий контекст, промежуточная впадина и сигнал от линии шеи. Одинаковые максимумы описывают только местоположение; они могут возникать в восходящем тренде, который впоследствии пробивает верхнюю границу. Количество касаний не показывает объем стоп-ордеров за пределами зоны.
Ограничьте ширину всего кластера.
Предлагаемые пивоты используют три бара слева и три справа. Максимум на i становится известен на i+3 и допустим к использованию на i+4. При создании кластера зафиксируйте A_ref по предыдущему ATR14 и eps=max(2 ticks,0.15A_ref). Нужны как минимум два пивота одного типа и масштаба; полный разброс цен не больше 2eps. Границы зоны — фактические минимум и максимум цен пивотов, центр — их медиана. Не прибавляйте eps к обеим границам повторно.
Между касаниями должно пройти не менее пяти баров, а цена между ними должна отойти хотя бы на eps. Это не даёт считать короткий боковой участок несколькими независимыми тестами. Пример TTL — 100 баров с публикации. Возраст нужно исследовать как признак, не предполагая, что старые уровни обязательно сильнее.
Если новый опорный элемент подходит для нескольких кластеров, выберите ближайший центр, отдавая предпочтение новому кластеру в случае равенства результатов. Отклоните любое добавление, которое делает весь кластер слишком широким. Метод цепочки соседей недостаточен: A может находиться рядом с B, а B — рядом с C, в то время как A и C находятся слишком далеко друг от друга.
Первый подходящий пивот создаёт неопубликованный зачаток кластера. Только второй допустимый, отделённый от первого пивот публикует ориентир для торговли. Задайте срок жизни зачатка, разрешение равенства при выборе и правила зрелого кластера; иначе одиночные пивоты могут ждать удобного совпадения бесконечно.
В базовом варианте неопубликованный зачаток истекает через 100 баров после подтверждения первого пивота. Опубликованный кластер истекает через 100 баров после первой публикации; поздние версии срок не продлевают. Измеряйте отход цены лишь между моментами самих касаний, исключая бары после второго касания за время его подтверждения. Игнорируйте повторные ID пивотов и соблюдайте eligible_from при публикации.
for p in newly_confirmed_pivots:
eligible_from = p.confirmed_at+1
expire_seeds_and_clusters_at_fixed_deadlines(p.confirmed_at)
candidates = active_clusters_same_type_and_scale(p)
keep = [c for c in candidates if
max(c.prices+[p.price])-min(c.prices+[p.price]) <= 2*c.eps]
c = nearest_center_then_newest(keep)
if c is None:
A = ATR14[p.confirmed_at-1]
if not finite_positive(A): continue
create_unpublished_seed(p,eps=max(2*tick,0.15*A),
seed_expiry=p.confirmed_at+100)
continue
if p.id in c.pivot_ids: continue
if not separated_touch_between_occurrences(p,c,min_bars=5): continue
append_pivot_once(c,p)
c.last_touch_index = p.occurred_at
if c.first_published_at is None:
c.first_published_at = p.confirmed_at
c.expiry = p.confirmed_at+100
publish_new_version(c,eligible_from=eligible_from,expiry=c.expiry)
# Departure is measured only between touch occurrence times.
# Later versions never reset expiry or rewrite active setup snapshots.
Объём у касаний: учитывайте время подтверждения
Симметричное окно торгового объёма вокруг пивота включает будущие относительно него бары. Полный признак неизвестен до завершения правой части окна. Если зона опубликована раньше, этот признак нельзя включать в решение. Более простой вариант измеряет объём от касания до подтверждения пивота за одинаковую длительность для каждого касания.
Снижение объема при втором касании можно проверить как гипотезу ослабления давления. Сохраняйте касания с возрастающим объемом, которые также не пересекают заданный уровень. Ни одна из форм гистограммы не указывает на накопление, распределение или конкретного участника. Кластер, соответствующий преобладающей тенденции, может, напротив, подтверждать продолжение движения через зону.
Для внутридневных данных нормализуйте объём по тому же времени сессии. Сравнение минимума на открытии с обеденным минимумом по сырому объёму смешивает порядок касаний с обычным ходом активности. Пропущенные записи сделок или укороченная сессия не доказывают истощение предложения.
Синтетические кластеры, сбои в цепочках и результаты торговли.
При tick=0.01 и A_ref=1 получаем eps=0.15 и максимальную width=0.30. Максимумы на барах 10, 24 и 39 равны 100, 100.12 и 100.25. После подтверждения всех максимумов и выполнения условий разделения зона равна [100,100.25], центр — 100.12. Финальная версия доступна лишь после подтверждения последнего максимума, не задним числом на баре 10.
Новый максимум на 100.42 находится всего лишь на расстоянии 0.17 от 100.25, но расширяет всю группу до 0.42. Исключить его из старого кластера. Создание нового кластера — возможная стратегия; перемещение координат уже активной конфигурации — нет. Этот пример показывает, почему метод ближайших соседей может изменяться без ограничений.
Пример последующей сделки: поздний бар достигает 100.50 и закрывается на 99.80, потенциально выполняя правило снятия ликвидности сверху с отдельными буферами. Синтетический шорт по 99.75, стоп 100.60 и цель 98.05 дают 2R до издержек. Если затем цена достигает 100.80, а защита исполняется по 100.65, убыток равен 0.90. Валидный кластер не гарантирует удержание цены.
Зона задаёт сделку лишь с отдельным триггером
На тех же опубликованных кластерах отдельно тестируйте вход против выхода за зону после снятия ликвидности и возврата, а также следование закрепившемуся пробою. Шорт сразу после подтверждения второго максимума — другая стратегия. Цена может много баров не возвращаться к зоне.
Кандидат сохраняет zone_version до истечения срока. Новое подходящее касание создаёт новую версию со своим eligible_at. Работающий детектор снятия ликвидности не должен расширять границу после выхода цены за неё, стирая событие. Сохраняйте source_pivot_ids для восстановления каждой опорной зоны.
После пробоя закрытием зона может считаться отработанной или переходить в новое состояние по заданному правилу. Совпадение с уровнем прошлого дня — полезные метаданные, не разрешение удвоить риск. Документация TradingView о времени расчёта помогает различать маркер на прошлом пивоте и момент, когда пивот стал известен [3].
Для одновременного выбора нескольких версий кластера используйте явное правило выбора, например, самую старую подходящую версию или ближайшую внешнюю границу. Выбор той версии, которая обеспечивает наиболее узкий прибыльный стоп-лосс после совершения сделки, приведет к появлению еще одной скрытой оптимизации.
Сначала проверьте качество зон, затем доходность сделок
Сначала проверьте согласованность последовательного воспроизведения: обработка по бару должна давать те же опубликованные версии, что пакетный расчёт на том же префиксе истории. Тестируйте равные цены, пропуски баров, корпоративные действия и смену шага цены. Кластеризация полной выборки с последующей исторической оценкой — не потоковый детектор.
Оценивайте первое последующее приближение к каждой зоне, сохраняя и пробои, и отскоки. Подбирайте контрольные примеры по возрасту, ширине, числу касаний и режиму. Сравнивайте со скользящими экстремумами или случайной сеткой похожей плотности. Если алгоритм рисует сотни уровней, почти каждый разворот окажется близко к одному из них.
В отчете должны быть указаны охват, количество кандидатов на сессию и чистые результаты каждого конкретного триггера. При сравнении кластеров с двумя и тремя касаниями сохраняйте одинаковое распределение рисков. Большее количество касаний может означать более сильное распознавание, повторное потребление покоящейся ликвидности или просто более длительную зону; данные должны различать эти гипотезы, а не предполагать монотонное улучшение.
Частые ошибки
Один абсолютный допуск для всех условий
Фиксированная ценовая дистанция в денежных единицах ведёт себя по-разному при разной волатильности; тестируйте чувствительность к ATR и шагу цены.
Соединение соседних опорных точек
Используйте полную ширину как максимум минус минимум цен, чтобы зона не дрейфовала.
Рассматривать одинаковые пики как двойную вершину
Без разворотного контекста и линии шеи кластер остаётся лишь ориентиром.
Список проверки перед использованием метода
Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.
Частые вопросы
Цены обязательно должны быть абсолютно одинаковыми?
Нет. Задайте допуск по шагу цены и заранее выбранному ориентиру волатильности, затем сохраняйте его на протяжении теста.
Три прикосновения всегда сильнее двух?
Универсальная связь не предполагается. Дополнительные касания могут сопровождать ослабление поддержки или сопротивления; проверяйте их по рыночным режимам.
Источники исследования
Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.
- Smart Money ConceptsLuxAlgo on TradingView. Прочитайте исходное описание индикатора и ограничения его доказательной базы. Проверено: .
- Support for ResistanceFederal Reserve Bank of New York. Ознакомьтесь с оригинальным сообщением об исследовании; в нем не тестируется данный вариант кластеризации. Проверено: .
- RepaintingTradingView. Ознакомьтесь с документацией, в которой описаны исторические и расчеты в реальном времени. Проверено: .
Связанные методы
Примечание о рисках
Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.
Проверьте правила, прежде чем рисковать реальным капиталом
Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.
Скачать Backtest в App Store