Заметка на тему индикатора измерения силы тренда
Понимание силы тренда помогает трейдерам оценить устойчивость движения цены и находить оптимальные точки входа и выхода. Идея индикатора взята из комментария Ийона Тихого (https://smart-lab.ru/mobile/topic/1119895/#comment17905643): он предложил измерять силу тренда через относительное отклонение цены от средней. Формула проста: разница между ценой и средней, деленная на среднюю. Это позволяет оценить тренд независимо от абсолютных значений цены.В тексте привожу открытый исходный код индикатора для того, чтобы любой человек мог проверить его в своём TradingView.Теоретическое обоснованиеИндикатор силы тренда показывает, насколько цена отклоняется от своего среднего значения. Он рассчитывается по формуле:Сила тренда = (Цена – Средняя) / Средняя × 100Где:Цена – текущая цена актива (например, цена закрытия свечи).Средняя – значение скользящей средней (например, 21-периодная экспоненциальная средняя EMA).Почему деление на среднюю удобнее?Абсолютное отклонение цены от средней меняется в зависимости от уровня цены актива. Например, отклонение в 10 рублей на акции стоимостью 100 рублей и 1000 рублей будет восприниматься по-разному. Деление на среднюю нормализует это значение, позволяя объективно сравнивать силу тренда на разных инструментах и таймфреймах. Использование двух средних вместо ценыВместо сравнения цены со средней можно использовать разницу между быстрой и медленной скользящей средней. Тогда формула примет вид:Сила тренда = (Быстрая средняя – Медленная средняя) / Медленная средняя × 100Этот вариант сглаживает резкие колебания цены и позволяет анализировать тренд без учета краткосрочного шума.Первый вариант индикатора (базовый) Базовая версия индикатора измеряет силу тренда через разницу между текущей ценой и скользящей средней.Исходный код Pine Script. RAW версия чтобы скопировать с Гитхаба без ошибок: https://raw.githubusercontent.com/empenoso/tradingview-pine-collection/refs/heads/main/The%20Power%20of%20Trend_v1.js :// https://smart-lab.ru/mobile/topic/1119895/#comment17905643 // Михаил Шардин, https://shardin.name/?utm_source=tradingview //@version=5 indicator("Сила Тренда", shorttitle="ТрендСила", overlay=false, precision=4) // Входные параметры length = input.int(21, title="Период средней", minval=1) maType = input.string("EMA", title="Тип средней", options=["SMA", "EMA", "WMA", "SMMA", "RMA", "DEMA", "TEMA", "HMA"]) src = input(close, title="Источник цены") showLabels = input(true, title="Показывать метки на графике?") // Расчет скользящей средней maValue = switch maType "SMA" => ta.sma(src, length) "EMA" => ta.ema(src, length) "WMA" => ta.wma(src, length) "RMA" => ta.rma(src, length) "DEMA" => ta.ema(ta.ema(src, length), length) "TEMA" => ta.ema(ta.ema(ta.ema(src, length), length), length) "HMA" => ta.hma(src, length) // Расчет силы тренда trendStrength = (src - maValue) / maValue * 100 // Умножаем на 100 для процентов // Визуализация plot(trendStrength, title="Сила тренда", color=color.new(color.blue, 0), linewidth=2) // Нулевая линия hline(0, "Нулевая линия", color=color.new(color.black, 50), linestyle=hline.style_dotted) // Вывод значений в таблицу var table infoTable = table.new(position.bottom_right, 1, 1) if barstate.islast table.cell(infoTable, 0, 0, "Сила тренда: " + str.tostring(trendStrength, "#.##%"), bgcolor=color.new(trendStrength > 0 ? color.green : color.red, 90), text_color=color.white)Этот индикатор прост в использовании и позволяет визуально оценивать силу тренда на любом активе. В следующем разделе разберем его усовершенствованную версию, которая учитывает два периода средней.Доработанный вариант индикатора (улучшенный) В ходе обсуждения с автором идеи были предложены улучшения базовой версии индикатора.Исходный код Pine Script. RAW-версия кода на GitHub для копирования без ошибок: https://raw.githubusercontent.com/empenoso/tradingview-pine-collection/refs/heads/main/The%20Power%20of%20Trend_v2.js :// https://smart-lab.ru/mobile/topic/1119895/#comment18037622 // Михаил Шардин, https://shardin.name/?utm_source=tradingview //@version=5 indicator("Усовершенствованная Сила Тренда", shorttitle="ТрендСила Pro", overlay=false, precision=4) // Входные параметры fastLength = input.int(9, title="Быстрый период", minval=1) slowLength = input.int(21, title="Медленный период", minval=1) maType = input.string("EMA", title="Тип средней", options=["SMA", "EMA", "WMA", "HMA"]) showHistogram = input(true, title="Показывать гистограмму?") showZeroLine = input(true, title="Показывать нулевую линию?") // Расчет скользящих средних ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "WMA" => ta.wma(source, length) "HMA" => ta.hma(source, length) fastMA = ma(close, fastLength, maType) slowMA = ma(close, slowLength, maType) // Улучшенный расчет силы тренда (относительное отклонение быстрой MA от медленной) trendStrength

Понимание силы тренда помогает трейдерам оценить устойчивость движения цены и находить оптимальные точки входа и выхода. Идея индикатора взята из комментария Ийона Тихого (https://smart-lab.ru/mobile/topic/1119895/#comment17905643): он предложил измерять силу тренда через относительное отклонение цены от средней. Формула проста: разница между ценой и средней, деленная на среднюю. Это позволяет оценить тренд независимо от абсолютных значений цены.
В тексте привожу открытый исходный код индикатора для того, чтобы любой человек мог проверить его в своём TradingView.
Теоретическое обоснование
Индикатор силы тренда показывает, насколько цена отклоняется от своего среднего значения. Он рассчитывается по формуле:
Сила тренда = (Цена – Средняя) / Средняя × 100
Где:
Цена – текущая цена актива (например, цена закрытия свечи).
Средняя – значение скользящей средней (например, 21-периодная экспоненциальная средняя EMA).
Почему деление на среднюю удобнее?
Абсолютное отклонение цены от средней меняется в зависимости от уровня цены актива. Например, отклонение в 10 рублей на акции стоимостью 100 рублей и 1000 рублей будет восприниматься по-разному. Деление на среднюю нормализует это значение, позволяя объективно сравнивать силу тренда на разных инструментах и таймфреймах.
Использование двух средних вместо цены
Вместо сравнения цены со средней можно использовать разницу между быстрой и медленной скользящей средней. Тогда формула примет вид:
Сила тренда = (Быстрая средняя – Медленная средняя) / Медленная средняя × 100
Этот вариант сглаживает резкие колебания цены и позволяет анализировать тренд без учета краткосрочного шума.
Первый вариант индикатора (базовый)
Базовая версия индикатора измеряет силу тренда через разницу между текущей ценой и скользящей средней.
Исходный код Pine Script. RAW версия чтобы скопировать с Гитхаба без ошибок: https://raw.githubusercontent.com/empenoso/tradingview-pine-collection/refs/heads/main/The%20Power%20of%20Trend_v1.js :
// https://smart-lab.ru/mobile/topic/1119895/#comment17905643
// Михаил Шардин, https://shardin.name/?utm_source=tradingview
//@version=5
indicator("Сила Тренда", shorttitle="ТрендСила", overlay=false, precision=4)
// Входные параметры
length = input.int(21, title="Период средней", minval=1)
maType = input.string("EMA", title="Тип средней", options=["SMA", "EMA", "WMA", "SMMA", "RMA", "DEMA", "TEMA", "HMA"])
src = input(close, title="Источник цены")
showLabels = input(true, title="Показывать метки на графике?")
// Расчет скользящей средней
maValue = switch maType
"SMA" => ta.sma(src, length)
"EMA" => ta.ema(src, length)
"WMA" => ta.wma(src, length)
"RMA" => ta.rma(src, length)
"DEMA" => ta.ema(ta.ema(src, length), length)
"TEMA" => ta.ema(ta.ema(ta.ema(src, length), length), length)
"HMA" => ta.hma(src, length)
// Расчет силы тренда
trendStrength = (src - maValue) / maValue * 100 // Умножаем на 100 для процентов
// Визуализация
plot(trendStrength, title="Сила тренда", color=color.new(color.blue, 0), linewidth=2)
// Нулевая линия
hline(0, "Нулевая линия", color=color.new(color.black, 50), linestyle=hline.style_dotted)
// Вывод значений в таблицу
var table infoTable = table.new(position.bottom_right, 1, 1)
if barstate.islast
table.cell(infoTable, 0, 0, "Сила тренда: " + str.tostring(trendStrength, "#.##%"),
bgcolor=color.new(trendStrength > 0 ? color.green : color.red, 90),
text_color=color.white)
Этот индикатор прост в использовании и позволяет визуально оценивать силу тренда на любом активе. В следующем разделе разберем его усовершенствованную версию, которая учитывает два периода средней.
Доработанный вариант индикатора (улучшенный)
В ходе обсуждения с автором идеи были предложены улучшения базовой версии индикатора.
Исходный код Pine Script. RAW-версия кода на GitHub для копирования без ошибок: https://raw.githubusercontent.com/empenoso/tradingview-pine-collection/refs/heads/main/The%20Power%20of%20Trend_v2.js :
// https://smart-lab.ru/mobile/topic/1119895/#comment18037622
// Михаил Шардин, https://shardin.name/?utm_source=tradingview
//@version=5
indicator("Усовершенствованная Сила Тренда", shorttitle="ТрендСила Pro", overlay=false, precision=4)
// Входные параметры
fastLength = input.int(9, title="Быстрый период", minval=1)
slowLength = input.int(21, title="Медленный период", minval=1)
maType = input.string("EMA", title="Тип средней", options=["SMA", "EMA", "WMA", "HMA"])
showHistogram = input(true, title="Показывать гистограмму?")
showZeroLine = input(true, title="Показывать нулевую линию?")
// Расчет скользящих средних
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"WMA" => ta.wma(source, length)
"HMA" => ta.hma(source, length)
fastMA = ma(close, fastLength, maType)
slowMA = ma(close, slowLength, maType)
// Улучшенный расчет силы тренда (относительное отклонение быстрой MA от медленной)
trendStrength = (fastMA - slowMA) / slowMA * 100 // В процентах
// Визуализация
plot(showHistogram ? trendStrength : na, title="Сила тренда",
style=plot.style_columns,
color=trendStrength >= 0 ? color.new(color.green, 20) : color.new(color.red, 20))
plot(trendStrength, title="Линия силы", color=color.new(color.blue, 0), linewidth=2)
// Нулевая линия
hline(0, "Нулевая линия", color=color.new(color.black, 50), linestyle=hline.style_dotted)
// Информационная панель
var table infoTable = table.new(position.bottom_right, 1, 1)
if barstate.islast
table.cell(infoTable, 0, 0, "Сила тренда: " + str.tostring(trendStrength, "#.##%") +
"\nFast MA: " + str.tostring(fastMA, format.volume) +
"\nSlow MA: " + str.tostring(slowMA, format.volume),
bgcolor=color.new(color.gray, 90),
text_color=color.black)
Этот вариант индикатора лучше определяет моменты усиления тренда, так как учитывает сглаженные данные, а не просто колебания цены относительно одной средней.
Как использовать индикатор в TradingView
Пошаговая инструкция:
- Открытие TradingView
Перейдите на сайт TradingView и войдите в свою учетную запись. Если у вас нет аккаунта, зарегистрируйтесь – это бесплатно. - Открытие графика
В верхнем меню выберите «График» и откройте нужный вам актив (акции, фьючерсы и т. д.). - Добавление индикатора вручную
В нижней панели нажмите на кнопку «Pine Editor» (Редактор Pine).
Скопируйте код индикатора из данной статьи и вставьте его в редактор.
Нажмите «Сохранить» и затем «Добавить на график». - Настройка параметров индикатора
После добавления индикатора на график нажмите на его название в списке индикаторов.
Откроется окно параметров, где можно изменить периоды средних (например, EMA 21 или SMA 50).
При необходимости настройте цветовую гамму и отображение гистограммы. - Интерпретация данных
Если значение индикатора положительное, тренд считается восходящим, если отрицательное – нисходящим.
Чем выше абсолютное значение индикатора, тем сильнее тренд.
Можно использовать сигналы пересечения нулевой линии для определения смены направления тренда.
Выводы
Базовый и усовершенствованный варианты индикатора помогают оценить силу тренда.
Интерпретация:
- Положительное значение — восходящий тренд.
- Отрицательное значение — нисходящий тренд.
- Чем больше абсолютное значение, тем сильнее тренд.
Дальнейшие улучшения:
- Добавить фильтрацию сигналов, например, через ATR.
- Ввести зону неопределенности для избежания ложных сигналов.
- Добавить параметры, учитывающие волатильность или объем.