Определить текущий "истинный минимум" (True Low, TL). TL — наименьшее из текущего минимума или предыдущей цены закрытия.
TL (i) = MIN (LOW (i) || CLOSE (i – 1))
Вычислить текущее "Покупательное давление" (Buying Pressure, BP), равное разнице между текущей ценой закрытия и текущим истиным минимумом.
BP (i) = CLOSE (i) - TL (i)
Определить "Истинный Диапазон" (True Range, TR). Это наибольшее из разностей: текущих максимума и минимума; текущего максимума и предыдущей цены закрытия; предыдущей цены закрытия и текущего минимума.
TR (i) = MAX (HIGH (i) - LOW (i) || HIGH (i) - CLOSE (i - 1) || CLOSE (i - 1) - LOW (i))
Вычислить сумму значений BP для всех трех периодов расчета:
BPSUM (N) = SUM (BP (i), i)
Вычислить сумму значений TR для всех трех периодов расчета:
TRSUM (N) = SUM (TR (i), i)
Вычислить "сырое значение" Окончательного Осциллятора (The Raw Ultimate Oscillator, RawUO):
RawUO = 4 * (BPSUM (1) / TRSUM (1)) + 2 * (BPSUM (2) / TRSUM (2)) + (BPSUM (3) / TRSUM (3))
Рассчитать значение Окончательного Осциллятора (Ultimate Oscillator, UO) по формуле:
UO = ( RawUO / (4 + 2 + 1)) * 100, где
MIN — минимальное значение;
MAX — максимальное значение;
|| — логическое ИЛИ;
LOW (i) — минимальная цена текущего бара;
HIGH (i) — максимальная цена текущего бара;
CLOSE (i) — цена закрытия текущего бара;
CLOSE (i — 1) — цена закрытия предыдущего бара;
TL (i) — Истинный минимум;
BP (i) — Покупательное давление;
TR (i) — Истинный Диапазон;
BPSUM (N) — математическая сумма значений BP для периода N (N равное 1 соответствует i = 7 барам; при N = 2, i = 14 барам; при N = 3, i = 28 барам);
TRSUM (N) — математическая сумма значений TR для периода N (N равное 1 соответствует i = 7 барам; при N = 2, i = 14 барам; при N = 3, i = 28 барам);
RawUO — "сырое значение" Окончательного Осциллятора;
UO — значение Окончательного Осциллятора.