HO (Harmonic Oscillator) и SHO (Simple Harmonic Oscillator) — Простой Гармонический осциллятор

Гармонический осциллятор (Harmonic Oscillator, HO) — это индикатор, разработанный для выявления периодичности и циклической, фазовых сдвигов и точек разворота, основанное на идее гармонических (синусоидальных) компонентов в ценовом ряду. Он основывается на принципе, что многие ценовые движения содержат гармонические (периодические) компоненты, которые можно выделить и использовать для прогнозирования будущих движений цены.

Индикатор применяет математические методы анализа спектра для декомпозиции ценового ряда на гармонические составляющие, выделяя доминирующие циклы. Затем он отображает эти циклические составляющие в виде осциллятора, который помогает трейдерам определить, когда цена может достичь локальных максимумов или минимумов в рамках выявленных циклов. Результат — осциллятор, колеблющийся вокруг нуля.
Интерпретация: значения > 0 — бычья фаза/лидерство цены над гармонической компонентой; значения < 0 — медвежья фаза. Пересечения нуля, экстремумы и дивергенции дают торговые сигналы. SHO имеет уровни перекупленности и перепроданности на отметках +40 и -40 соответственно. В экстремальные периоды осциллятор может достигать уровней +60 и -60. Нулевой уровень демонстрирует равновесие между периодами быков и медведей. SHO колеблется между +40 и -40. При восходящем тренде SHO колеблется между 0 и +40, когда быки контролируют рынок. Напротив, SHO колеблется между 0 и -40 во время нисходящих трендов, когда рынок контролируют медведи. Достижение экстремального уровня -60 в восходящем тренде является признаком слабости. В основном осциллятор будет отступать от своей центральной линии, а не от верхней границы +40. С другой стороны, достижение уровня +60 при нисходящем тренде является признаком силы, и осциллятор не сможет достичь своей нижней границы -40.
Simple Harmonic Oscillator (SHO) — индикатор для анализа финансовых рынков, основанный на статье Акрама Эль Шербини «Time Cycle Oscillators», опубликованной в журнале IFTA в 2018 году. SHO — ограниченный осциллятор для простого гармонического индекса, который рассчитывает период цикла рынка. SHO — упрощённая реализация идеи гармонического отклонения — быстрее получить осциллирующую линию без сложных цифровых фильтров. Идея: взять простую разницу между «быстрой» и «медленной» сглаженной версией цены (или цену минус сглаживание), возможно нормализовать по волатильности — получится осциллятор, приближённо отражающий гармоническое поведение.
Принцип работы SHO
SHO описывает простой гармонический осциллятор — систему, где восстанавливающая сила пропорциональна отрицательному смещению от равновесного положения. В отсутствие трения колебания продолжаются вечно, но при наличии трения (ослабления) колебания затухают. Используется для коротких и средних сроков, движется в диапазоне от -100 до 100%. Генерирует сигналы на покупку и продажу при пересечении определённых уровней. Ноль как центровая линия, положительные/отрицательные значения, экстремумы = возможные развороты.
Расчет индикаторов Harmonic Oscillator и Simple Harmonic Oscillator
Расчет Гармонического осциллятора включает следующие этапы:
1. Предварительная обработка ценового ряда (детрендинг):
Detrended Price = Price — SMA(Price, Length)
2. Применение спектрального анализа для выявления доминирующих циклов:
Spectral Components = FFT(Detrended Price)
3. Выделение наиболее значимых гармонических компонентов:
Dominant Cycles = Extract Top N Spectral Components based on amplitude
4. Синтез Гармонического осциллятора на основе доминирующих циклов:
HO = Reconstruction of Dominant Cycles through Inverse FFT
где:
Price — цена (обычно цена закрытия)
SMA — простое скользящее среднее
FFT — быстрое преобразование Фурье
Length — период анализа
ВТОРОЙ способ расчета:
A. Harmonic Oscillator — вариант на основе Hilbert Transform
Пусть P_t — цена (Close) в момент t.
1) Выделяем гармоническую (узкополосную) компоненту H_t (например, через Hilbert Transform или band-pass фильтр):
H_t = BandPassFilter(P_t, params)
(реализация фильтра даёт набор рекурсивных коэффициентов; в простейшей дискретной форме это линейная рекурсия:
H_t = a1 * P_t + a2 * P_{t-1} + a3 * P_{t-2} + b1 * H_{t-1} + b2 * H_{t-2}
— где коэффициенты (a1..b2) определяются желаемой центральной частотой и демпфированием)
2) Определяем осциллятор как (варианты):
SHO_t = P_t − H_t
или
SHO_t = Smooth(P_t − H_t) (например, SMA/EMA от P_t − H_t)
Если требуется нормализация по амплитуде:
SHO_t = (P_t − H_t) / (MA(|P_t − H_t|, M) + ε)
Примечание: точные значения коэффициентов зависят от выбранного фильтра (Hilbert, Butterworth, IIR band-pass). Это «канонический» подход для реального Harmonic Oscillator: выделить узкополосную гармонику и смотреть отклонение/фазу.
B. Harmonic Oscillator — вариант через фазу (Hilbert)
Можно использовать фазу φ_t, найденную через Hilbert Transform, и вычислять разность фаз или синус фазы:
φ_t = atan2(HT_quadrature_t, HT_inphase_t)
SHO_t = sin(φ_t) или SHO_t = φ_t − φ_{t-1} (оценка мгновенной частоты)
C. Simple Harmonic Oscillator — распространённые простые формулы
Вариант 1 — разность двух EMA (простейший осциллятор, похожий на MACD):
EMA_fast_t = EMA(P_t, n_fast)
EMA_slow_t = EMA(P_t, n_slow)
SimpleSHO_t = EMA_fast_t − EMA_slow_t
Вариант 2 — цена минус сглаживание (простая модель отклонения):
MA_t = MA(P, N) (SMA или EMA)
SimpleSHO_t = P_t − MA_t
Вариант 3 — нормализованная версия (чтобы значения были сопоставимы):
num_t = EMA_fast_t − EMA_slow_t
den_t = ATR_k_t (или SMA(|P_t − MA_t|, M))
SimpleSHO_t = num_t / (den_t + ε)
Вариант 4 — центровая нормализация (диапазон от −1 до +1):
SimpleSHO_t = (P_t − MA_t) / (0.5 * (Max(P_{t-N+1..t}) − Min(P_{t-N+1..t}) ) + ε)
Примеры реализаций (код-скетчи)
— Простая версия (псевдокод):
EMA_fast = EMA(close, 5)
EMA_slow = EMA(close, 34)
SimpleSHO = EMA_fast — EMA_slow
— Нормализованный вариант:
num = EMA(close, 5) — EMA(close, 34)
den = SMA(abs(close — SMA(close, 34)), 34)
SimpleSHO = num / (den + 1e-8)
— Harmonic (band-pass) — схема рекурсивного band-pass (иллюстрация одного IIR band-pass):
alpha = … (зависиt от периода)
H_t = a1*(P_t — P_{t-2}) + b1*H_{t-1} + b2*H_{t-2}
SHO = Smooth(P — H)
Как использовать Simple Harmonic Oscillator

• Пересечение нулевой линии:
— Когда SHO пересекает нулевую линию снизу вверх, это может рассматриваться как бычий сигнал.
— Когда SHO пересекает нулевую линию сверху вниз, это может рассматриваться как медвежий сигнал.
• Экстремумы осциллятора:
— Когда SHO достигает локального максимума, это может указывать на потенциальный пик цены.
— Когда SHO достигает локального минимума, это может указывать на потенциальное дно цены.
• Дивергенции:
— Бычья дивергенция: цена формирует новый минимум, а SHO — более высокий минимум.
— Медвежья дивергенция: цена формирует новый максимум, а SHO — более низкий максимум.
• Проекция циклов:
— Регулярные пики и впадины SHO могут использоваться для проекции будущих точек разворота.
— Анализ продолжительности между пиками/впадинами может помочь определить длину доминирующего цикла.
• Изменение амплитуды:
— Увеличение амплитуды колебаний SHO может указывать на усиление циклической компоненты.
— Уменьшение амплитуды колебаний SHO может указывать на затухание циклической компоненты.
• Тактика «Устойчивый тренд» — во время восходящего тренда осцилляторы движутся выше центральной линии с увеличением периода циклов. Пересечения нижних границ и линии равновесия генерируют сигналы на покупку, пересечение верхних границ — сигналы на продажу.
• Тактика «Боковой тренд» — осцилляторы колеблются между верхней и нижней границами. Пересечение нижней границы вверх генерирует сигнал на покупку, пересечение верхней границы вниз — сигнал на продажу.
• Сочетание с другими индикаторами:
— SHO лучше всего работает в сочетании с трендовыми индикаторами.
— В трендовых рынках сигналы HO могут использоваться для определения точек входа в направлении тренда.


















