← К каталогу
Исходный код · ID 4243

MOD=Volatility Shock Half-Life Monitor(Overlay)

mod=volatility shock half-life monitor(overlay)=v6.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный индикатор предназначен для мониторинга эпизодов повышенной волатильности на ценовых графиках в TradingView. Он сравнивает текущую (быструю) волатильность с базовым уровнем и фиксирует момент, когда их соотношение превышает заданный порог, что обозначается как SHOCK.

В рамках активного эпизода индикатор отслеживает обновления локальных максимумов волатильности (PEAK), вторичные ускорения (REHEAT) и достижение целевого уровня затухания избыточной волатильности (HALF-LIFE). Также предусмотрена защита от слишком длительных эпизодов через механизм таймаута.

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

Настройки программы

НастройкаОписание
fastLen Быстрая волатильность — Длина — Количество свечей (период), используемых для расчёта текущей быстрой волатильности (скользящего стандартного отклонения). Меньшее значение делает индикатор более чувствительным к резким ценовым движениям.
baseLen Базовая волатильность — Длина — Количество свечей (период), используемых для расчёта базовой (нормальной) волатильности. Служит эталоном спокойного рынка, против которого сравнивается текущая волатильность.
shockMultiple Порог SHOCK — Множитель от базы — Множитель для срабатывания шока. Событие SHOCK активируется, когда быстрая волатильность превышает базовую по заданному множителю (например, в 1,75 раза).
decayFraction Цель HALF-LIFE — Доля затухания — Целевая доля остаточной волатильности для затухания. Значение 0,50 означает момент, когда избыточная волатильность от пика до базового уровня снизилась ровно на половину (50%).
reheatPercent Порог REHEAT — Превышение пика (%) — Порог вторичного ускорения в процентах. REHEAT срабатывает, когда новый максимум волатильности внутри текущего эпизода превышает предыдущий пик как минимум на заданный процент.
maxEpisodeBars Максимальная длительность SHOCK — Максимальная продолжительность шока в свечах (внутренний таймаут). Верхний предел свечей, которое может длиться активный эпизод до принудительного завершения.
useLogReturns Использовать логарифмические доходности — Использование логарифмических доходностей (ln(close/close[1])) вместо простых. Рекомендуется для повышения точности расчётов на разных ценовых диапазонах.
showShock SHOCK — Начало всплеска — Отображение метки SHOCK на графике в момент официального начала нового эпизода повышенной волатильности.
showPeak PEAK — Новый максимум — Отображение метки PEAK при каждом обновлении нового локального максимума волатильности внутри активного шока.
showReheat REHEAT — Вторичное ускорение — Отображение метки REHEAT при вторичном ускорении, когда волатильность пробивает предыдущий локальный пик.
showHalfLife HALF-LIFE — Достигнута цель затухания — Отображение метки HALF-LIFE на графике в момент, когда избыточная волатильность успешно снижается до целевого уровня затухания.
showBackground Фон активного SHOCK — Подсветка фона графика на протяжении всей продолжительности активного эпизода шока (стандартно оранжевый, после вторичного ускорения — фуксия).
Получить полный код

Поиск по коду файла

indicator("MOD=Volatility Shock Half-Life Monitor(Overlay)", overlay=true, max_labels_count=500)

groupCalc = "Volatility Calculation"
fastLen       = input.int(10,   "Fast Volatility — Length",                         minval=2,    group=groupCalc, tooltip="Number of candles (period) used to calculate the current fast volatility (moving standard deviation). A smaller value makes the indicator more sensitive to sharp price movements.")
baseLen       = input.int(100,  "Base Volatility — Length",                         minval=10,   group=groupCalc, tooltip="Number of candles (period) used to calculate the base (normal) volatility. Serves as a market calm benchmark against which current volatility is compared.")
shockMultiple = input.float(1.75, "SHOCK Threshold — Base Multiple",         minval=1.05, step=0.05, group=groupCalc, tooltip="Multiplier for shock triggering. The SHOCK event activates when fast volatility exceeds base volatility by the specified multiple (for example, 1.75 times).")
decayFraction = input.float(0.50, "HALF-LIFE Target — Residual Volatility",  minval=0.05, maxval=0.95, step=0.05, group=groupCalc, tooltip="Target proportion of residual volatility for decay. A value of 0.50 means the point where excess volatility from the peak down to the base level has decreased by exactly half (50%).")
reheatPercent = input.float(10.0, "REHEAT Threshold — New Peak Above (%)",   minval=0,    step=1,    group=groupCalc, tooltip="Secondary acceleration threshold in percentages. REHEAT triggers when a new volatility maximum within the current episode exceeds the previous peak by at least the specified percentage.")
maxEpisodeBars= input.int(40,   "Maximum SHOCK Duration",                         minval=2,    group=groupCalc, tooltip="Maximum duration of the shock in bars (internal timeout). The upper limit of candles an active episode can last before a forced termination.")
useLogReturns = input.bool(true,  "Use Logarithmic Returns",                                        group=groupCalc, tooltip="Use logarithmic returns (ln(close/close[1])) instead of simple returns. Recommended for calculation accuracy across different price ranges.")

groupDisplay = "Chart Labels"
showShock    = input.bool(true,  "SHOCK — Surge Start",                    group=groupDisplay, tooltip="Display the SHOCK label on the chart at the exact moment of the official start of a new volatility surge.")
showPeak     = input.bool(false, "PEAK — New Maximum",                     group=groupDisplay, tooltip="Display the PEAK label every time a new local volatility maximum is recorded inside an active shock.")
showReheat   = input.bool(true,  "REHEAT — Secondary Acceleration",   group=groupDisplay, tooltip="Display the REHEAT label during secondary acceleration when volatility breaks above the previous local peak.")
showHalfLife = input.bool(false, "HALF-LIFE — Decay Target Reached", group=groupDisplay, tooltip="Display the HALF-LIFE label at the moment when excess volatility successfully drops down to the target decay level.")
showBackground = input.bool(true, "Active SHOCK Background",         group=groupDisplay, tooltip="Highlight the background of the price chart with color throughout the entire duration of the active shock episode (orange is standard, fuchsia is after secondary acceleration).")

if barstate.isfirst and fastLen >= baseLen
    runtime.error("The base volatility period must be greater than the fast volatility period.")

float ret = useLogReturns ? math.log(close / close[1]) : close / close[1] - 1.0

float fastVo

Показано первые 50% кода (символов: 5546)

Открыть по тарифу

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

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
554,60₽ ≈ $6.78