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

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

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

Данные и рынкиИспользуйте согласованный ряд цен закрытия или числовой индикатор. Обрабатывайте пропущенные наблюдения и разрывы между сессиями до обнаружения экстремумов; не смешивайте единицы измерения цен или методы корректировки.
Таймфреймы исследованияH=1 и дневные бары — возможные конфигурации для исследования. Длина окна подсчитывает количество наблюдений, а не автоматически эквивалентное количество времени на рынке для всех инструментов.
Пик 106 находится на четыре пункта выше своего более высокого базового значения 102; пик 110 лишь незначительно превышает базовое значение 109.7 в своем отдельном локальном окне.Открыть иллюстрацию в полном размере
Исходные синтетические цены. Отдельные локальные окна показывают, почему 106 может быть более заметным, чем рябь в точке 110. Вся построенная серия не рассматривается как одно окно заметности.

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

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

Более высокая цена не обязательно означает более выраженный пик.

Закрытие на 120 над основанием около 119.8 может быть менее структурно выраженным, чем закрытие на 105 над основанием около 100. Абсолютная высота зависит от номинальной цены инструмента. Выраженность отвечает на другой вопрос: насколько кандидат возвышается над контуром окружающей структуры?

SciPy определяет выраженность пика, используя более высокое из двух базовых значений [1]. Ширина измеряется при заданной относительной высоте выраженности [2], а find_peaks отображает несколько отдельных фильтров [3]. Это инструменты, основанные на числовых рядах. Интерпретация принятого пика как сопротивления, распределения или торговой возможности требует дополнительного контекста и независимого тестирования.

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

Локальный детектор с конечной задержкой подтверждения.

Предлагаемый базовый вариант использует W=11 наблюдений и радиус h=5. На закрытии бара t оценивайте только кандидата i=t−5 в окне от i−5 до i+5. Требуйте выраженность не менее 1.5×ATR[i−1]. W=11 и 1.5 — экспериментальные, не оптимизированные значения. ATR перед кандидатом даёт фиксированный ориентир волатильности, уже известный при подтверждении.

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

Код ограничивает плато одним наблюдением. Если необходимы плоские вершины, определите для них репрезентативную временную метку и политику полного подтверждения в отдельной версии. Значения NaN не должны незаметно становиться нулями, поскольку это создаст искусственно глубокие основания. Кандидат на границе окна не имеет необходимых окружающих доказательств и не должен рассматриваться как центрированный пик.

h = 5; W = 2*h + 1
on_closed_bar(t):
    i = t - h
    if i-h < 0 or invalid_data(i-h, t): return
    x = close[i-h:t+1]
    candidates, _ = find_peaks(x, plateau_size=(1,1))
    if h not in candidates: return
    prominences, left_bases, right_bases = peak_prominences(x, [h], wlen=W)
    p = prominences[0]
    a = ATR[i-1]
    if a is not missing and isfinite(a) and a > 0 and p / a >= 1.5:
        emit_once(i, confirmed_at=t, prominence=p, window=W)
# Troughs: repeat on -close, preserving timestamps and ATR.

Высота, порог, выраженность и ширина отвечают на разные вопросы

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

Фильтрация по расстоянию также требует причинно-следственной политики. Запуск find_peaks по всей исторической серии и допущение более крупного будущего пика для исключения более раннего ближайшего пика может изменить выбор прошлого. Базовый вариант оценивает каждого центрированного кандидата и не применяет глобального отсечения по расстоянию. Альтернативой может быть задержка после публикации событий, но она отдает предпочтение хронологической доступности, а не наиболее впечатляющему пику, видимому позже.

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

Числовые примеры, отброшенные волны и убыточные сделки.

Синтетический локальный сегмент: 100, 101, 103, 106, 104, 102, 103. В пределах именно этого иллюстративного сегмента левая основа — 100, а правая — 102, поэтому степень выраженности равна 4. При использовании в качестве эталона ATR=2 нормализованная степень выраженности равна 2 ATR и превышает предложенный порог 1.5. Окружающее окно еще должно закрыться, прежде чем это событие можно будет опубликовать.

Другой отрезок, 108, 109, 110, 109.8, 109.7, содержит более высокий абсолютный пик, но более высокое из боковых оснований равно 109.7. Локальная выраженность лишь 0.3; при ATR=1 тот же фильтр не пройден. Это иллюстрации геометрии, не полные тестовые наборы W=11 и не доказательства прибыльности одного сегмента против другого.

После выраженного максимума сделка всё равно может проиграть. Пусть подтверждение допускает шорт, ближайшее доступное исполнение — 101.8, структурный стоп — 106.2. Плановый ценовой риск уже 4.4 пункта. Отскок к 107 делает сделку неудачной, хотя детектор верно измерил прошлый экстремум. Проекция цели на величину выраженности — отдельная гипотеза.

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

Выраженность как признак опоры до определения входа

Предлагаемое применение — отбор опор двойной вершины или зоны сопротивления, оставляя триггер более позднему событию, например закрытию ниже промежуточного минимума. Храните с кандидатом window_start, window_end, оба основания, выраженность, ATR_ref, версию детектора и confirmed_at. Эти поля позволяют точно воспроизвести решение.

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

На RSI или другом ограниченном индикаторе выраженность измеряется в пунктах индикатора. Деление выраженности RSI на ATR цены смешивает единицы. Нужна согласованная по размерности нормировка либо исходные пункты индикатора как отдельно калиброванный признак. То же относится к сравнению детекторов логарифма цены и обычной цены.

Проверяйте отдельный вклад объёма

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

Группируйте наблюдения по отношению выраженности к ATR и сравнивайте диапазоны RVOL внутри групп. Так проверяется добавочная информация объёма сверх амплитуды цены, а не просто отбор крупных движений. Внутри дня используйте сопоставимые базы по времени сессии; для крипто зафиксируйте площадку и единицы объёма — базовый или котируемый актив.

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

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

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

Измеряйте число сохранённых опор, фиксированную задержку подтверждения в h баров и долю строящихся на них моделей, устаревших к доступности последней опоры. Затем оценивайте чистые результаты на заранее зафиксированном тестовом периоде с реалистичными издержками и исполнением. Чистый на вид график — не экономическая метрика.

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

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

Смешение выраженности и абсолютной высоты

Более высокая номинальная цена не означает более выраженного пика по сравнению с его локальной базовой ценой.

Отсев по расстоянию после просмотра всего ряда

Будущий пик может удалить более раннее событие. Используйте пошаговое воспроизведение или явно заданную паузу после события без знания будущего.

Сглаживание без учета задержки

Центрированный сглаживатель использует более поздние наблюдения. Добавьте эту задержку к фактической доступности события.

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

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

0/8 пунктов

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

Лучше ли выраженность обычного пивота?

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

Может ли метод Prominence обнаружить пики RSI?

Да, RSI — числовой ряд. Результат измеряется в пунктах RSI, поэтому ATR цены нельзя непосредственно использовать в знаменателе.

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

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

  1. scipy.signal.peak_prominencesSciPy. Прочитаны определения оснований, wlen и алгоритма; это численная документация, не финансовое исследование. Проверено: .
  2. scipy.signal.peak_widthsSciPy. Прочитаны правила измерения ширины на относительной высоте выраженности и интерполяции. Проверено: .
  3. scipy.signal.find_peaksSciPy. Прочитаны определения фильтров и правила расстояния. Проверено: .

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

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

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

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

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

Скачать Backtest в App Store