Зміст статті

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

CME дає контекст підтримки/опору, scikit-learn визначає способи зв’язування, а дослідження Osler на FX розглядає каскади стоп-ордерів. Жодне не підтверджує прибутковість цього послідовного кластерного детектора.

Дані та ринкиВикористовуйте OHLCV визначеного ринку. Кластер минулих екстремумів не розкриває напряму стоп-ордерів, ліквідності очікувальних заявок або особистостей трейдерів.
Таймфрейми дослідженняH=1 або денні дані зі сталим вікном історії W — можливі дослідницькі варіанти. Частоту дотиків і правила відходу ціни тлумачте у вибраному масштабі барів.
Максимуми на 100,100.35 та 100.55 утворюють вузьку зону; пізніший рух до 100.9 повертається нижче її верхньої межі.Відкрити ілюстрацію в повному розмірі
Авторські синтетичні точки показують три підходи з відходами ціни між ними, потім вихід за зону й повернення. Інтервали на рисунку умовні; це не буквальний тест розділення на п’ять барів.

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

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

Зона представляє вже відомі спостереження

CME включає попередні максимуми й мінімуми до опорних точок підтримки та опору [1]. У програмі точніше говорити про набір близьких підтверджених історичних екстремумів. Це не доводить, що там зараз чекають покупці чи продавці або наступний підхід дасть відскок.

Запропонований запис кластера містить cluster_id, тип HIGH або LOW, ідентифікатори pivot членів, мінімум, максимум, медіану, час останнього підтвердження та кількість незалежних дотиків. Кожен член має бути підтверджений перед використанням зони. Зона з однаковим максимумом описує геометрію ціни; називати її стіною стакану ордерів вимагає фактичних доказів стакану ордерів.

Відокремте детектор від стратегії, що його використовує. Одна зона може служити гіпотезі відскоку проти руху до неї, пробою з продовженням чи ретесту після зміни ролі. Скасування для однієї гіпотези не стирає історичних спостережень, що утворили зону.

Обмежуйте ширину всього кластера, не лише сусідніх пар

Встановіть epsilon=max(2 ticks,0.15×A_ref), при цьому A_ref заморожується під час створення кластера. Це запропоновані параметри. Додайте новий опорний елемент, лише якщо результуючий максимум мінус мінімум залишається в межах 2epsilon. Це обмеження діаметра нагадує ідею максимальної відстані, що лежить в основі повного зв'язування [2], але послідовний алгоритм тут не є повною реалізацією AgglomerativeClustering.

За кількох придатних кластерів виберіть найближчу медіану; за рівності — найстаріший ID кластера. Інакше створіть новий. W=200 барів і min_separation=5 — початкові дослідницькі параметри. Розділяйте HIGH та LOW до окремого протоколу зміни ролей.

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

Після спливу активного кластера зафіксуйте фінальну історію, не використовуйте його ID повторно. Новий кластер за тією ж ціною — новий об’єкт. Зберігайте epsilon та опорний ATR, щоб пізніша волатильність не розширювала непомітно стару зону заради незручних нових півотів.

on_confirmed_pivot(p):
    candidates = active_clusters_of_same_kind(p)
    eligible = [c for c in candidates
      if max(c.max,p.price)-min(c.min,p.price) <= 2*c.eps]
    c = nearest_median_then_oldest_id(eligible)
    if c is None:
        c = new_cluster_with_single_member(p, touch_count=1,
                                          last_touch_index=p.index)
        return
    independent = p.index-c.last_touch_index >= min_separation
    independent &= price_departed_frozen_zone_between(c.last_touch_index,p.index,c)
    add_pivot_once(c,p)
    if independent:
        c.touch_count += 1
        c.last_touch_index = p.index
    if c.touch_count >= 2:
        publish_new_zone_version(c, available_at=p.confirmed_at)
# Active candidates retain their original zone-version snapshot.

Числове створення зони та збиткова угода на поверненні

Синтетичний приклад: опорний ATR=2 та tick=0.01 дають epsilon=0.30 і граничний діаметр 0.60. Незалежні підтверджені максимуми 100.00, 100.35 та 100.55 утворюють [100.00,100.55] з медіаною 100.35. Максимум 100.80 відхиляється: повна ширина стала б 0.80, хоча до найближчого елемента лише 0.25.

Це пояснює, чому відстань між найближчими членами є недостатньою. Ланцюг 100,100.4,100.8,101.2 може бути з'єднаний невеликими сусідніми проміжками, охоплюючи широку область. Якщо будь-яка пізніша реакція будь-де в цій області називається успішним повторним тестуванням, детектор втрачає корисний критерій фальсифікації.

Умовний виграшний шлях: ціна виходить над 100.55 до 100.90 і закривається назад на 100.20, створюючи кандидата в шорт після повернення. Вхід 100.10, стоп 101.00 та ціль 98.30 означають ціль 2R до витрат. За невдачі ціна натомість закривається на 101.10 й тримається над зоною. Збиток уже виконаного шорту лишається за правилом стопа; не можна зсунути зону вгору заднім числом заради мітки.

Тестуйте новий півот точно на межі діаметра й на один тик далі. Створіть точку, рівновіддалену від двох придатних медіан. Ті самі дані мають завжди вибирати той самий кластер незалежно від порядку обходу словника чи завантаження графіків.

Рахуйте незалежні підходи, не послідовні бари

П'ять сусідніх барів поблизу 100.3 зазвичай представляють одне відвідування, а не п'ять незалежних тестів. Запропоноване скидання вимагає закриття, щоб вийти із зони принаймні на один заморожений ATR, і щонайменше п'ять барів мають пройти, перш ніж пізніший дотик може бути зарахований. Це явно визначає повернення з-за меж регіону.

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

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

Прориви та реакції потребують різних стратегічних правил

Версія на повернення чекає закриття назад усередині сталої зони та входить за наступної можливості виконання. Версія на пробій вимагає закриття вище max+buffer і може мати окреме очікування ретесту. Кожній потрібні власні інвалідація, стоп, ціль і строк; детектор зон їх не вибирає.

Офіційна анотація Osler повідомляє свідчення, що стоп-лоси здатні прискорювати рух валют [3]. Це не визначає кількість стопів біля кластера максимумів OHLCV і не гарантує розвороту після зняття ліквідності. Без сильніших даних описуйте спостережуване: вихід за рівень, пробій закриттям або повернення.

Зберігайте точну версію зони, використану ордером. Новий учасник може опублікувати ширшу або зміщену версію для майбутніх кандидатів, тоді як існуюча угода зберігає своє початкове обґрунтування. Якщо стратегія дозволяє оновлення зупинки або контексту, записуйте їх як явні дії з часом активації, замість того, щоб перемальовувати початкові налаштування.

Обсяг свічки не є обсягом торгів у зоні

OHLCV дає весь обсяг бару, а не частину угод у зоні. Сумувати весь обсяг барів, що торкнулися області, й називати його обсягом за ціною неточно, особливо для широких барів. Розподіл за цінами потребує окремих угод або явно розкритого наближення.

Ознаки: RVOL бару пробою, обсяг відкату відносно зіставної бази, середня активність на незалежний підхід. Відокремлюйте обсяг від геометрії, щоб у порівнянні прибрати його без зміни складу кластера. Висока активність може означати інше середовище й водночас гіршу доступну ціну виконання.

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

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

Потокове відтворення та пакетний розрахунок мають публікувати однакові версії зон. Тестові випадки: ланцюгове приєднання, рівні відстані, сплив W, кілька барів одного підходу й затримки підтвердження півотів. Кожна минула угода посилається на збережений version_id; сьогоднішнього графіка для відтворення рішення мало.

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

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

Поширені помилки

Ланцюг переростає в необмежену зону

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

Боковий рух завищує число дотиків

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

Виводити приховані заявки з геометрії

Кластер екстремумів — не пряме вимірювання стопів чи ліквідності очікувальних заявок.

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

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

0/8 пунктів

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

Чи має центр зони бути середнім значенням чи медіаною?

Медіана менш чутлива до окремого віддаленого елемента, але тригери зазвичай спираються на явні межі. Порівняйте визначення центру, якщо він справді впливає на стратегію.

Чи можна об'єднати стару підтримку та новий опір?

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

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

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

  1. Support and ResistanceCME Group. Прочитайте навчальну дискусію про попередні екстремуми та цінові регіони. Перевірено: .
  2. AgglomerativeClusteringscikit-learn. Прочитайте визначення повного та одинарного зв'язку. Перевірено: .
  3. Stop-Loss Orders and Price Cascades in Currency MarketsCarol L. Osler, Federal Reserve Bank of New York. Ознайомтеся лише з офіційною анотацією; це не тестування цього зонального детектора на попередніх даних. Перевірено: .

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

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

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

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

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

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