TPR (Trend Persistence Rate) — Коэффициент устойчивости тренда

Индикатор Trend Persistence Rate (TPR) измеряет долю (процент) баров в заданном окне lookback N, которые являются продолжением направления предыдущего бара. Проще: показывает, насколько часто цена «продолжает» предыдущее движение вместо его смены. Это даёт количественную оценку серийности однонаправленных движений и помогает отличать устойчивые трендовые периоды от шумного флетового поведения. TPR — Коэффициент устойчивости тренда — это технический индикатор, разработанный Ричардом Постером (Акции и сырьевые товары, февраль 2021 г., стр. 12), доктором философии. Как следует из названия, этот технический индикатор пытается измерить силу тренда. В то время как многие другие индикаторы оценивают силу тренда на основе изменений цен, коэффициент устойчивости тренда делает это с учетом продолжительности тренда.
Значения:
— TPR близкий к 1 (или 100%) — в большинстве баров направление не меняется: высокий уровень persistency.
— TPR близкий к 0 (или 0%) — частые смены направления: рынок непоследователен, флет/шум.
— Обычно интерпретируют пороги: >0.7 (сильная persistency), 0.4–0.7 (умеренная), <0.4 (слабая).
В отличие от Trend Persistence Counter (TPC), который считает длину текущей серии, TPR измеряет частотную долю продолжений внутри окна. TPR даёт статистическую картину за фиксированное окно, а не только текущую длину серии.
Формула расчёта индикатора Trend Persistence Rate
Обозначения:
— C[t] — цена закрытия бара t (можно использовать любую цену: Close/Median/Typical).
— delta[t] = C[t] − C[t-1]
— sign[t] = sign(delta[t]) = { +1, 0, −1 } (варианты: нули можно отбрасывать или считать как отдельный класс)
— N — длина окна (lookback), по умолчанию число последних баров, например 20
Базовая формула (вариант 1 — с учётом нулей как разрыва):
1. Для i = t−N+1 .. t вычислить sign[i].
2. Сформировать флаги продолжения для i = t−N+2 .. t:
continuation[i] = 1, если sign[i] == sign[i−1] и sign[i] != 0, иначе 0.
3. TPR[t] = (Σ_{i=t−N+2}^{t} continuation[i]) / (N−1)
Диапазон: 0 .. 1 (или умножают на 100 → 0..100%)
Формула (вариант 2 — игнорирование нулевых изменений):
— Исключить бары с sign == 0 из расчёта (т.е. считать только значимые барные изменения). Тогда
— M = количество пар последовательных баров внутри окна, где ни один из пары не ноль (или счёт пар значимых изменений)
— TPR = (число пар, где sign[i]==sign[i-1]) / M
Формула (с весами по возрасту — взвешенный TPR):
— Иногда полезно придавать больший вес более поздним барам:
w_i — веса для пар (например экспоненциальные или линейно убывающие).
TPR_w = (Σ w_i * continuation[i]) / Σ w_i
Формула (с нормализацией по волатильности — hybrid):
— Можно учитывать значимость баров по амплитуде: continuation_amp[i] = 1, если sign[i] == sign[i−1] и |delta[i]| > k*ATR (и/или |delta[i-1]| > k*ATR)
— Тогда TPR_amp = Σ continuation_amp / (N−1) (или по числу проверяемых пар)
Примеры вычисления:
— N=10, последовательность знаков (ignoring zeros): [+1, +1, −1, −1, +1, +1, +1, −1, −1, −1]
пары продолжения: [1,0,1,0,1,1,0,1,1] → сумма = 6 → TPR = 6/9 ≈ 0.667
Использование в торговле индикатора Trend Persistence Rate

Ниже — практическое применение Trend Persistence Rate (TPR) в трейдинге: конкретные тактики, правила входа/выхода, управление риском, комбинации с другими индикаторами и советы по настройке.
1) Роль TPR в системе
— Фильтр рыночного режима: TPR показывает, трендовый рынок (высокий TPR) или флет/шум (низкий TPR).
— Используется как вспомогательный индикатор — для включения/исключения стратегий, управления объёмом и выхода из позиций.
2) Тактики и правила
A. Фильтрация входов по направлению
Правило: принимать только сигналы в направлении доминирующего тренда, если TPR > upper_thresh.
— Пример: TPR(20) > 0.65 → разрешены только лонги при бычьих сигналах; TPR(20) < 0.35 → запрещены трендовые входы.
B. Адаптивный режим стратегии (Trend vs Range)
Режимы:
- Trend mode: TPR ≥ 0.6 — применяются трендовые стратегии (пробои, следование за движением).
- Range mode: TPR ≤ 0.4 — переход на контртренд/торговлю диапазонами.
- Neutral: 0.4 < TPR < 0.6 — снижение активности или дополнительные подтверждения.
C. Управление размером позиции и риском
Увеличивать риск/лоты при высоком TPR (при подтверждении объёмом/амплитудой); снижать при низком.
- Пример: risk = 1% при TPR <0.5, 1.5% при 0.5–0.7, 2% при TPR ≥0.7.
D. Пирамидинг и добавления
- Добавлять к убыточной/прибыльной позиции только если TPR растёт (например добавлять части при TPR ≥ 0.6 и снова при ≥0.8), и если амплитуда баров растёт.
E. Выходы и защита прибыли
- Удерживать позицию, пока TPR остаётся выше удерживающего порога; при падении TPR — частичное или полное закрытие.
- Частичная фиксация при достижении исторически высокого TPR (95-й перцентиль) — признак возможной перегретости импульса.
F. Сигнал раннего разворота
- Резкое снижение TPR (например с 0.8→0.3) — ранний индикатор ослабления тренда; требует немедленного пересмотра позиции.
3) Комбинации с другими индикаторами (лучшие практики)
- EMA/MA: входы по направлению MA только если TPR подтверждает направление.
- ATR: использовать для фильтрации «малых» баров; требовать |delta| > k*ATR для учёта бара в TPR.
— Volume: требовать увеличение объёма при росте TPR для подтверждения качества тренда.
— ADX: ADX показывает силу тренда, TPR — его последовательность; использовать вместе (например ADX>25 и TPR>0.6).
4) Подбор порогов и тестирование
— Таймфрейм влияет: на М1–М15 TPR менее стабильный (больше шума), на H1–D — более значимый.
— Подбирать upper_thresh, lower_thresh и окно N через бэктесты по конкретному инструменту. Рекомендуемые начальные значения: N=20, upper=0.6–0.7, lower=0.35–0.45.
— Тестировать: hit-rate, средний P&L при разных уровнях TPR, просадки, количество сделок.
5) Практические шаблоны правил (коротко)
— Фильтр входа: Signal_primary AND TPR(20) ≥ 0.65 → вход; иначе игнорировать.
— Управление: при TPR ≥0.7 увеличить позицию на X% (при подтверждении объёмом).
— Выход: если TPR падает ниже 0.4 → закрыть или сократить позицию на Y%.
6) Ограничения и риски
— TPR не учитывает амплитуду по умолчанию — длинная серия мелких баров может вводить


















