TPC (Trend Persistence Counter) — Счетчик сохранения тренда

Trend-Persistence-Counter
Индикатор Trend Persistence Counter (TPC) — это простой счётчик длины текущей последовательной серии однонаправленных баров (или свечей). Он показывает, сколько подряд баров шли в одном направлении (вверх или вниз) до текущего бара. TPC измеряет «как долго» держится текущий импульс; высокая величина означает длительный непрерывный трендовый импульс, низкая — недавнюю смену направления.

Отличительные черты
— Простота реализации и интерпретации.
— Низкая вычислительная сложность (O(1) на бар при итеративной реализации).
— Может быть комбинирован с амплитудой баров, объёмом и волатильностью для более точной оценки качества импульса.
— Не нормирован по амплитуде — измеряет только количество баров; без дополнительной нормализации одинаково трактует 10 маленьких баров и 10 больших баров.

Принципы использования
TPC даёт количественную метрику длительности текущего импульса. Используют его как:
— фильтр для входов (входить в сделки только если TPC превысил или ниже порога),
— сигнал для управления позицией (усиление/снижение объёма, частичная фиксация),
— компонент более сложных индексов (например, Trend Persistence Score).


Формула расчёта индикатора Trend Persistence Counter

Обозначения:
— C[t] — цена закрытия бара t (можно брать другую цену: Open/High/Low/typical).
— delta[t] = C[t] − C[t-1] — sign[t] =
— +1, если delta[t] > threshold_up
— −1, если delta[t] < −threshold_down - 0, если |delta[t]| ≤ threshold (уровень «шумовой» зоны) (threshold_up/down — пороги для игнорирования шума; по умолчанию 0) Базовый (рекуррентный) алгоритм: - Если sign[t] == sign[t-1] и sign[t] != 0: TPC[t] = TPC[t-1] + 1 Иначе если sign[t] != 0: TPC[t] = 1 Иначе (sign[t] == 0): TPC[t] = 0 (вариант: сохранить предыдущее значение или обнулять) Псевдокод:

if sign[t] == sign[t-1] and sign[t] != 0:
    TPC[t] = TPC[t-1] + 1
elif sign[t] != 0:
    TPC[t] = 1
else:
    TPC[t] = 0

Варианты и расширения расчёта:
— Ограничение на максимум (cap): TPC = min(TPC, N_max) для предотвращения роста без предела.
— Скользящее окно: считать максимальную длину серии внутри последних N баров (useful for bounded memory).
— Учитывание нулевых/нейтральных баров: можно игнорировать нулевые бары (не обнулять счётчик, а не учитывать их как разрыв), т.е. при sign==0 — TPC[t]=TPC[t-1] (или не изменять), чтобы серийность не ломалась мелким шумом.
— Амплитудная фильтрация: задавать threshold = k * ATR(period) или threshold = min_tick*множитель, чтобы считать только значимые изменения.
— Двунаправленный счётчик: хранить два счётчика — TPC_up и TPC_down (один измеряет длину текущей бычьей серии, другой — медвежьей); один из них всегда равен 0.

Нормализованные варианты (полезно для сравнения между инструментами и таймфреймами):
— Вариант A (по окну N):
TPC_norm[t] = TPC[t] / N → диапазон 0..1
— Вариант B (по историческому максимуму M over lookback L):
TPC_norm[t] = TPC[t] / max( max_TPC_over_L, 1 )
— Вариант C (логарифмическая):
TPC_norm[t] = log(1 + TPC[t]) / log(1 + M)


Использование в торговле индикатора Trend Persistence Counter

Trend-Persistence-Counter-пример
— Выделите свечи, когда значение TPC пересекает определенный порог (например, сильное продолжение прорыва).
— Используйте пересечение нуля в качестве потенциального предупреждения об отмене сигнала.
— Фильтруйте сигналы тренда в существующих стратегиях.
— Отслеживайте, как долго сохраняется тенденция после прорыва.
— Быстро обнаруживайте, когда структура тренда ломается.
— Помогите визуально отфильтровать “сильных” против “слабых” движений.
— Создавайте оповещения на основе логики (например, тенденция продолжается для N свечей подряд).

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

Фильтрация входа по направлению
Правило: принимать входы в направлении тренда только если TPC >= k.
— Пример: для Swing-трейда на дневном графике разрешать лонг, если TPC_up >= 3 (т.е. подряд 3 бычьих бара).
— Порог k подбирается эмпирически: для скальпинга k=1–3, для свинга k=3–10.

Управление размером позиции (pyramiding)
— Увеличивать позицию каждые N дополнительных баров в одном направлении (например, добавить часть позиции при TPC = 3, 6, 9), при условии роста объёма и амплитуды.
— Ограничение: не добавлять после TPC превысил допустимый максимум (чтобы не усреднять в развороте).

Выход / фиксация прибыли
— Частичная фиксация при достижении заданного TPC (фиксируем X% прибыли при TPC >= T_take).
— Закрывать позицию, если TPC резко обнуляется или меняет знак (sign сменился): сигнал смены импульса.
— Комбинация: держать позицию пока TPC не станет ниже удерживающего порога (например TPC < 2). Индикатор перекупленности/перепроданности тренда
— Если TPC становится очень большим (в сравнении с историческим распределением), это может сигнализировать о перенасыщенности импульса и повышенном риске отката. Использовать вместе с амплитудой баров и RSI/ATR: длинная серия при падающей амплитуде — сигнал слабости.

Комбинация с амплитудой и объёмом
— Улучшенный критерий входа: sign совпадает и TPC >= k и средняя направленная амплитуда последних k баров > threshold_amp и объём растёт.
— Это снижает число ложных сигналов, когда серия состоит из маленьких баров.

Использование в алгоритмах управления риском
— Динамическое увеличение/уменьшение стоп-лосса: при увеличении TPC можно расширять стоп-трейлинг для предоставления пространства тренду; при падении TPC — ужесточать стоп.
— Регулировка левериджа: при высокой TPC и подтверждённой амплитуде увеличивать позицию, при низкой — снижать.

Примеры конкретных правил
— Вход в лон:
— Условие: цена > EMA(50) AND TPC_up >= 3 AND avg_up_bar_amp(3) > 0.5*ATR(14)
— Стоп: под локальным минимумом или ATR-множитель
— Тейк: частично при TPC=5, полностью при TPC падает до 1
— Выход/реверс:
— Закрыть лон, если sign[t] == −1 AND TPC_down >= 2 (быстрая смена зеркального импульса)

Практические советы по настройке и тестированию
Подбор порогов и параметров:
— Подбирайте k (порог TPC), правило игнорирования шумовых баров (threshold) и cap через бэктест на исторических данных конкретного инструмента и таймфрейма.

Валидация:
— Тестируйте на разных рыночных режимах (тренд, флет, волатильность), смотрите на отношение выигрышей/потерь и средний профит/сделку.

Комбинация с другими индикаторами:
— Для лучших результатов используйте TPC не как единственный сигнал, а как фильтр или дополнительную метрику (EMA, ADX, объем, ATR).

Внимание к таймфрейму:
— TPC на минутных графиках часто даёт много шумных серий; на дневных/часовых — более значимые импульсы.

Учёт разницы инструментов:
— Разные активы имеют разные типичные длины серий; нормализуйте TPC или подбирайте пороги отдельно.