Блог им. empenoso

Заметка на тему индикатора измерения силы тренда

Понимание силы тренда помогает трейдерам оценить устойчивость движения цены и находить оптимальные точки входа и выхода. Идея индикатора взята из комментария Ийона Тихого (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 :

<code>// 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)</code>

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

Доработанный вариант индикатора (улучшенный)

Заметка на тему индикатора измерения силы тренда

В ходе обсуждения с автором идеи были предложены улучшения базовой версии индикатора.

Исходный код Pine Script. RAW-версия кода на GitHub для копирования без ошибок: https://raw.githubusercontent.com/empenoso/tradingview-pine-collection/refs/heads/main/The%20Power%20of%20Trend_v2.js :

<code>// 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)</code>

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

Как использовать индикатор в TradingView

Пошаговая инструкция:

  1. Открытие TradingView
    Перейдите на сайт TradingView и войдите в свою учетную запись. Если у вас нет аккаунта, зарегистрируйтесь – это бесплатно.
  2. Открытие графика
    В верхнем меню выберите «График» и откройте нужный вам актив (акции, фьючерсы и т. д.).
  3. Добавление индикатора вручную
    В нижней панели нажмите на кнопку «Pine Editor» (Редактор Pine).
    Скопируйте код индикатора из данной статьи и вставьте его в редактор.
    Нажмите «Сохранить» и затем «Добавить на график».
  4. Настройка параметров индикатора
    После добавления индикатора на график нажмите на его название в списке индикаторов.
    Откроется окно параметров, где можно изменить периоды средних (например, EMA 21 или SMA 50).
    При необходимости настройте цветовую гамму и отображение гистограммы.
  5. Интерпретация данных
    Если значение индикатора положительное, тренд считается восходящим, если отрицательное – нисходящим.
    Чем выше абсолютное значение индикатора, тем сильнее тренд.
    Можно использовать сигналы пересечения нулевой линии для определения смены направления тренда.

Выводы

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

Интерпретация:

  • Положительное значение — восходящий тренд.
  • Отрицательное значение — нисходящий тренд.
  • Чем больше абсолютное значение, тем сильнее тренд.

Дальнейшие улучшения:

  • Добавить фильтрацию сигналов, например, через ATR.
  • Ввести зону неопределенности для избежания ложных сигналов.
  • Добавить параметры, учитывающие волатильность или объем.


Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»

31 марта 2025 г.

★5
12 комментариев

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

Сила тренда = (Быстрая средняя – Медленная средняя) / Медленная средняя × 100

Кто-то переизобрел индикатор MACD…
идея. не факт что сильно улучшит, но точно даст пищу для размышления

* отклонение от среднего имеет некоторое распределение
* когда значение отклонения слишком большое или слишком маленькое — повышается вероятность того, что следующий день будет в сторону приближения к среднему
* в первом приближении распределение можно считать нормальным и отклонения измерять в сигмах
avatar
LN(price/EMA(price))
По мне, так это вариант осциллятора. Можно, если поднапрячь зрение, увидеть не силу тренда, а зоны перепроданности и перекупленности. 
Впрочем, все простое придумано до нас. И основная часть сложного тоже. 
avatar
SergeyJu, Это всё условно. Зона перепроданности, перекупленности, по сути это какое-то время идущий тренд на меньшем интервале.
avatar
Replikant_mih, все условно и это условно. 
avatar
SergeyJu, Ну просто люди сами себе часто шоры выставляют всякими ярлыками, мутными классификациями и подобным).
avatar
Как вариант. В свое время Кауфман предложил индикатор ER (Efficiency Ratio), которое по сути измеряет силу тренда и используется в его адаптивной средней.
avatar

У меня почему то индикатор появился не полностью, только нижняя часть.

Без обьемов. В чем может быть причина? 

Или нужно отдельно индикатор Обьема ставить на график.

avatar
Shara, попробуйте другой таймфрейм выбрать
Как этим практически пользоваться, чтобы извлекать прибыль? В статье не хватает такого раздела.

Аналогичные идеи приводят к несложным выводам:
   Как совершенно верно заметил выше amberfoxman, нужно найти такие значения текущего отклонения, при входе на которых затем получите статистический плюс при чем-то обоснованном выходе. Например, аналогичном показателе в противоположную сторону. Обычно это 2-4% отклонения. Причём для каждого инструмента диапазон свой.
    Эффект от подхода — около половины отданных при этом сумм комиссий. То есть, если при случайном входе вы статистически проигрываете комиссию, то тут станете проигрывать полкомиссии.
avatar
svgr, это как раз самый интересный вопрос и его в заметке нет.
Михаил Шардин, ну, вот я и описал, что примерно будет по итогам тестов в лучшем случае. На плохих инструментах и этого не будет.
Проверял такое в 2015-2018.
Потом додумал как дальше улучшить результативность и всё же в плюсы систематически выйти.

avatar

теги блога Михаил Шардин

....все тэги



UPDONW
Новый дизайн