Содержание статьи
- Доказательства и область применения
- Иллюстрация
- Процесс
- У экстремума есть время появления и время подтверждения
- Детерминированное определение с явным правилом равных экстремумов
- Числовые примеры и случаи обязательного отклонения
- Превращение якорей в отдельную торговую гипотезу
- Признаки объёма относятся к конкретным временным меткам
- Перед оценкой доходности проверьте корректность события.
- Частые ошибки
- Практический список проверки
- Частые вопросы
- Источники исследования
Доказательства и область применения
Источники подтверждают терминологию локальных экстремумов и опасность нанесения информации на прошлые бары. Правило равных экстремумов, обработка событий и торговый эксперимент ниже — исследовательские предложения. Бэктест прибыльности этой реализации не проводился.
Практическая последовательность действий
- Проверить барыПринимайте полное окно закрытых баров.
- Отступите назад на r баровОцените кандидата i=t−r.
- Сравните обе стороныПримените зарегистрированную конвенцию о плато.
- Запишите подтверждениеХраните время появления и подтверждения отдельно.
- Передайте событие стратегииРазрешите запускать сделки только на основании последующей информации.
У экстремума есть время появления и время подтверждения
На баре i новый максимум — лишь кандидат. При наличии правого окна r=3, прежде чем детектор сможет определить, остались ли их максимумы ниже этого значения, должны закрыться еще три бара. Сохраните occurred_at=i и confirmed_at=i+3. На графике маркер в точке i может быть отображен для удобства чтения, но ордер, использующий это событие, не может существовать до подтверждения и соответствующей задержки обработки данных.
TradingView описывает геометрию двусторонних точек разворота [1] и предупреждает, что построение графика точки разворота в прошлом может исказить представление о том, когда она стала известна [2]. В SciPy find_peaks используется другая конвенция для плоских плато [3]. Следовательно, при сравнении реализаций недостаточно просто сопоставить итоговую картину: выбранные ими опорные точки и доступные временные метки могут различаться.
Подтвержденный разворотный уровень остается историческим наблюдением, даже если цена впоследствии пробьет его. Восприятие каждого последующего прорыва как доказательства неверности старого разворотного уровня приводит к путанице между определением локального экстремума и прогнозом постоянного сопротивления. Храните наблюдения отдельно от гипотез об их будущем использовании.
Детерминированное определение с явным правилом равных экстремумов
Предлагаемый базовый уровень использует l=r=2 и выбирает крайнюю правую точку с равными максимумами. H[i] должен быть больше или равен каждому левому максимуму и строго больше каждого правого максимума. Неравенства для минимумов следует перевернуть. Эти параметры и правила разрешения неоднозначностей являются экспериментальными настройками, а не оптимальными значениями или точным воспроизведением конкретной библиотеки.
Требуется l+r+1 действительных баров с упорядоченными, уникальными временными метками и известным торговым календарем. Если окно пересекает отсутствующие данные, запишите причину и пропустите подтверждение. Заполнение отсутствующего интервала вымышленным плоским торговым баром может изменить как плато, так и задержку его подтверждения. Запланированное закрытие на ночь отличается от необъяснимого отсутствия бара.
Каждое событие следует генерировать один раз, используя идентификатор, содержащий инструмент, временной интервал, версию детектора, метку времени возникновения и тип. Если на внешнем баре выполняются условия максимума и минимума, следует опубликовать неоднозначное наблюдение. Система генерации паттернов не должна выдумывать порядок достижения этим баром максимума и минимума.
on_closed_bar(t):
i = t - r
if i < l or window_has_missing_bar(i-l, t): return
high_ok = H[i] >= max(H[i-l:i]) and H[i] > max(H[i+1:t+1])
low_ok = L[i] <= min(L[i-l:i]) and L[i] < min(L[i+1:t+1])
if high_ok and low_ok: emit_ambiguous(i, confirmed_at=t)
elif high_ok: emit_once('HIGH', i, H[i], confirmed_at=t)
elif low_ok: emit_once('LOW', i, L[i], confirmed_at=t)
Числовые примеры и случаи обязательного отклонения
Синтетические максимумы 100, 102, 105, 104, 103 идентифицируют 105 по индексу 2. В случае с l=r=2 событие становится доступным только после закрытия индекса 4. Для почасовых баров, закрывающихся в интервале от 09:00 до 13:00, экстремум произошел в точке 11:00, а подтверждение — в точке 13:00. Ордер на основании этого подтверждения может быть размещен только после этого.
Замените последний максимум на 106: кандидат 105 не подтвердится. Удалять опубликованный pivot не требуется — этот кандидат никогда не был подтверждён. В ряду 100, 102, 105, 105, 104, 103 предложенное правило выбирает второй, самый правый максимум 105. Строгие неравенства с обеих сторон отклонили бы плато; это другой детектор, требующий отдельной версии.
Внешний бар с H=108 и L=95 может иметь максимум выше соседних максимумов и минимум ниже соседних минимумов. OHLC не показывает, что было раньше: 108 или 95. Сохраните оба факта или флаг неоднозначности, но не используйте их как два последовательных шага модели «голова и плечи». Полезный тест задаёт одному бару OHLC два возможных внутрибарных пути и проверяет, что детектор по одним барам не утверждает то, что невозможно узнать из его входных данных.
Превращение якорей в отдельную торговую гипотезу
Сам детектор не размещает ордера. Один предложенный эксперимент покупает лишь после того, как последующее закрытие пересечёт подтверждённый максимум pivot плюс буфер: buffer=max(2 ticks,0.1×ATR from before the trigger bar). Здесь берутся два тика и ATR до сигнального бара. Вход на следующем открытии по доступной для исполнения цене и заранее выставленный стоп-ордер на покупку — разные модели исполнения; выберите одну до оценки результатов.
Ранее подтверждённый минимум pivot может задавать структурный стоп, а фиксированный срок K баров ограничивает, как долго максимум остаётся потенциальным уровнем. Не записывайте пробой, якобы произошедший до доступности необходимой опорной точки. Если из-за другого детектора или задержки данных уровень уже пересечён, отклоните устаревшую модель либо определите отдельную стратегию позднего входа.
Сохраняйте исходный поток pivot неизменным. Чередование максимумов и минимумов — последующее преобразование: два последовательных максимума могут требовать объединения или замены кандидата, но эти операции должны иметь версии и временные метки. Уже опубликованная модель не может незаметно получить лучшую опорную точку из более поздних данных. Явно регистрируйте аннулирование, истечение срока или создание нового кандидата взамен прежнего.
Тест исполнения должен включать гэп между сигналом и исполнением, невозможность занять бумаги для короткой позиции в зеркальной стратегии и пересечение стопа до открытия следующего бара. Корректное событие детектора может не привести к сделке или привести к экономически невыгодной сделке; отчёт должен различать эти исходы.
Признаки объёма относятся к конкретным временным меткам
Укажите объем торгов на уровне occurred_at и объем торгов на уровне confirmed_at в отдельных столбцах. Первый описывает торговую активность на экстремальном уровне; второй — активность во время последующих подтверждений. Функция, использующая следующие три бара, доступна на момент подтверждения, а не ретроспективно на уровне опорного бара. Ее временная метка должна соответствовать самому новому используемому входному значению.
Предложенное сравнение проверяет модель только по цене против добавления RVOL на последующем триггере: текущий объём делится на медиану объёмов предыдущих 20 баров; экспериментальный порог — 1.5. Для внутридневных акций база в то же время сессии обычно точнее определена, чем смешение открытия и середины дня. Тиковый объём FX измеряет обновления конкретного поставщика и не является автоматически числом проторгованных контрактов.
Проверьте, добавляет ли объем информацию в сопоставимых группах по волатильности и времени суток. В противном случае фильтр по объему может просто отбирать широкие бары с более высокими издержками исполнения. Регистрируйте также отклоненные возможности: оценка только исполненных сделок может скрыть тот факт, что фильтр удалил большинство возможностей или существенно изменил позицию.
Перед оценкой доходности проверьте корректность события.
Повторно обрабатывайте каждый начальный отрезок данных и сравнивайте все события, опубликованные до его конца. Добавление 100 баров не должно менять идентификатор, цену, тип или время подтверждения старого события. Сравнивайте записи, а не снимки графика. Добавьте тестовые наборы для плато, внешних баров, пропусков, изменения размера тика и отрицательных цен, если инструмент их допускает.
Измеряйте число pivot на 1,000 баров, задержку подтверждения, расстояние между опорными точками и долю построенных затем моделей, уже недействительных к моменту, когда становится известна их последняя опорная точка. Эти показатели объясняют изменение набора возможностей при смене детектора ещё до анализа прибыли.
Сравните l=r=2 с 3 и 5 на данных разработки и зафиксируйте выбор до финального теста. Асимметричные окна проверяйте как отдельно зарегистрированные конфигурации. Визуально более привлекательные опорные точки не доказывают более высокое математическое ожидание после затрат. Финальная оценка торговли должна учитывать спред, комиссии, гэпы, исполнение стопов, размер позиции и упущенные возможности из-за задержки подтверждения.
Частые ошибки
Вход точно на экстремуме, отмеченном задним числом
Ошибка — использовать метку, нанесённую на прошлый бар, как время ордера. Повторный расчёт на начальных отрезках выявляет использование информации, ещё недоступной в тот момент.
Путаница между локальными опорными точками и опорными точками сессии.
Локальные экстремумы и формулы P, R и S, основанные на сессиях, — это разные инструменты с разными входными данными.
Выбор масштаба после просмотра результатов
Каждая пара l/r представляет собой экспериментальную версию. Сохраняйте как неудачные варианты, так и выбранную конфигурацию.
Список проверки перед использованием метода
Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.
Частые вопросы
Устраняет ли r=0 задержку?
Можно получить детектор экстремумов только по прошлым данным, но без подтверждения разворота последующими барами справа. Это другой сигнал, требующий отдельной оценки.
Может ли цена пробить подтвержденный разворотный уровень?
Да. Исторический экстремум остаётся правильно определённым; последующий пробой сопротивления не стирает наблюдение.
Источники исследования
Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.
- Auto trendlinesTradingView. Изучено определение pivot с окнами по обе стороны; коммерческие примеры не считаются доказательством прибыльности. Проверено: .
- Pine Script: RepaintingTradingView. Прочитайте разделы, посвященные построению графиков в прошлом и изменчивым, незавершенным данным. Проверено: .
- scipy.signal.find_peaksSciPy. Изучено поведение на плато и при пропусках; это спецификация API, а не финансовое доказательство. Проверено: .
Связанные методы
Примечание о рисках
Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.
Проверьте правила, прежде чем рисковать реальным капиталом
Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.
Скачать Backtest в App Store