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

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

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

• Тактика «Устойчивый тренд» — во время восходящего тренда осцилляторы движутся выше центральной линии с увеличением периода циклов. Пересечения нижних границ и линии равновесия генерируют сигналы на покупку, пересечение верхних границ — сигналы на продажу.

• Тактика «Боковой тренд» — осцилляторы колеблются между верхней и нижней границами. Пересечение нижней границы вверх генерирует сигнал на покупку, пересечение верхней границы вниз — сигнал на продажу.

• Сочетание с другими индикаторами:
— SHO лучше всего работает в сочетании с трендовыми индикаторами.
— В трендовых рынках сигналы HO могут использоваться для определения точек входа в направлении тренда.