Блог им. 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 г.

1.1К | ★5
12 комментариев
идея. не факт что сильно улучшит, но точно даст пищу для размышления

* отклонение от среднего имеет некоторое распределение
* когда значение отклонения слишком большое или слишком маленькое — повышается вероятность того, что следующий день будет в сторону приближения к среднему
* в первом приближении распределение можно считать нормальным и отклонения измерять в сигмах
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

Читайте на SMART-LAB:
Фото
Нефть не любит резких взлетов
👉 Наш канал в MAX 👈 👉 Чат Иволги в MAX 👈 На графике нефти последних 20 с небольшим лет мы не видим восходящей...
Фото
BRENT: Дипломатия Трампа против "бычьего десанта" — кто блефует?
После сенсационного заявления Трампа о достижении двухнедельного перемирия с Ираном нефть открыла торги в среду с мощным гэпом вниз. Цена...
АПРИ продолжает строительство всесезонного мультикурорта «ФанПарк»
АПРИ продолжает строительство всесезонного мультикурорта «ФанПарк» «ФанПарк» – это мультифункциональный всесезонный курорт на...
Фото
Кто сейчас самый дешевый сбыт? Сводный пост по сбытовым компаниям по отчетам РСБУ за 2025г.
Волгоградэнергосбыт Ставропольэнергосбыт Самараэнерго Мордовэнергосбыт Пермэнергосбыт Новосибирскэнергосбыт...

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

....все тэги



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