Зміст статті

Докази та сфера застосування

Оригінальний індикатор пропонує EQH/EQL, тоді як дослідження рівнів підтримки/опору та документація з перемальовування надають контекст. Запропонований алгоритм онлайн-кластеризації не має доведеної прибутковості торгівлі тут.

Дані та ринкиOHLC з правильним кроком ціни й узгодженим коригуванням акцій або переходом між ф’ючерсними контрактами. Ціни з різними правилами коригування не можна об’єднувати в кластер.
Таймфрейми дослідженняВедіть окремий потік pivot для кожної шкали. П'ятнадцятихвилинні та погодинні кластери можуть перетинатися за ціною, зберігаючи при цьому різний час підтвердження.
Три окремі максимуми поблизу 100 утворюють кластер; пізніше проникнення оцінюється окремим тригером.Відкрити ілюстрацію в повному розмірі
Синтетична ціна та обсяг. Три максимуми утворюють зону шириною 0.25; фактична торгова ефективність не відображена. Точки – це вибрані орієнтири подій, а не послідовні бари або рівні інтервали часу.

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

Порядок дій: Рівні максимуми й мінімуми: кластери без майбутніх даних
Повні кроки наведено нижче. На кожному етапі потрібно записати причину відхилення, якщо бракує даних або не виконано умови.
  1. Підтвердити опорні точкиЗберігайте позначки часу виникнення та підтвердження окремо.
  2. Перевірте розділення дотиківВимагайте однакового масштабу й достатнього відходу ціни між дотиками.
  3. Перевірити повну ширинуОцініть весь кластер, а не лише його найближчого сусіда.
  4. Опублікувати версіюЗаморозьте межі та час, коли вони стануть придатними.
  5. Зачекайте на тригерТестуйте зняття ліквідності та пробій незалежно.

Спостережувана кластеризація цін та гіпотеза ліквідності

Два мінімуми на 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 і кроку ціни.

З'єднання сусідніх опорних точок

Використовуйте повну ширину як максимум мінус мінімум цін, щоб зона не дрейфувала.

Вважати рівні максимуми подвійною вершиною

Без розворотного контексту й лінії шиї кластер — лише орієнтир.

Список перевірки перед застосуванням методу

Позначайте кожен пункт після перевірки на власних даних. Прогрес зберігається в цьому браузері й не засвідчує прибутковість стратегії.

0/7 пунктів

Поширені запитання

Ціни повинні бути абсолютно однаковими?

Ні. Задайте допуск за кроком ціни й наперед обраним орієнтиром волатильності та зберігайте його протягом тесту.

Чи завжди три дотики сильніші за два?

Універсального зв’язку не припускаємо. Додаткові дотики можуть супроводжувати ослаблення підтримки чи опору; оцінюйте їх за режимами.

Джерела дослідження

Кожне джерело підтверджує визначення або докази, описані поруч. Псевдокод, штучні приклади та запропоновані параметри потребують окремої перевірки.

  1. Smart Money ConceptsLuxAlgo on TradingView. Прочитайте оригінальний опис інструменту та його обмеження щодо доказів. Перевірено: .
  2. Support for ResistanceFederal Reserve Bank of New York. Прочитайте оригінальне оголошення про дослідження; воно не тестує цей варіант кластеризації. Перевірено: .
  3. RepaintingTradingView. Ознайомтеся з документацією щодо порівняння розрахунків в історичному та реальному часі. Перевірено: .

Пов’язані методи

Примітка про ризики

Матеріал призначений для навчання й планування досліджень, а не є фінансовою порадою. Backtest моделює минулі дані, не гарантує майбутніх результатів і не здійснює реальних угод. Методи бібліотеки не обов’язково реалізовані в застосунку. Дивіться методологію і навчальний центр.

Перевірте правила, перш ніж ризикувати реальним капіталом

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

Завантажити Backtest в App Store