PGO (Pretty Good Oscillator) — Довольно хороший осциллятор

Pretty Good Oscillator (PGO) — это технический индикатор, разработанный Марком Джонсоном, который сравнивает текущую цену закрытия с предыдущими, учитывая волатильность этого диапазона, что делает его более адаптивным к изменяющимся рыночным условиям. Pretty Good Oscillator — неформальное название семейства импульсных осцилляторов, представляющих собой разность между «быстрой» и «медленной» скользящими средними цены с возможным дополнительным сглаживанием. По смыслу схож с MACD и Awesome Oscillator, но обычно реализуется проще и с вариативными параметрами. Цель — измерять импульс движения цены, выявлять смену тренда, дивергенции и зоны перекупленности/перепроданности, которые могут сигнализировать о потенциальных разворотах тренда или точках продолжения. Осциллятор Pretty Good — это инструмент технического анализа, призванный дать представление о динамике и волатильности движения цен актива. Он сочетает в себе концепции скользящих средних и Средний истинный диапазон создать осциллятор, который колеблется вокруг центральной линии, предлагая трейдерам указания на потенциальные ценовые тенденции и развороты.
Основная идея PGO
● Сравнить «короткий» и «длинный» усреднённые уровни цены, чтобы получить скорость изменения/импульс.
● Положительные значения PGO означают, что короткая средняя выше длинной → бычий импульс; отрицательные — медвежий.
● Дополнительное сглаживание уменьшает шум и делает сигналы более стабильными, но даёт запаздывание.
Стратегия использования Pretty Good Oscillator
● Подтверждения существующих трендов — индикатор должен совпадать с направлением движений цены.
● Фильтрации сигналов других индикаторов — например, можно рассматривать только бычьи сигналы, когда PGO положительный, и только медвежьи, когда PGO отрицательный.
● Выхода из позиций — экстремальные значения PGO могут использоваться как сигналы для фиксации прибыли. Например, можно выходить из длинных позиций, когда PGO превышает +2, и из коротких, когда PGO падает ниже.
Расчёт Осциллятора Pretty Good Oscillator (PGO)
Определение наивысшего максимума (Highest High) и наинизшего минимума (Lowest Low) за заданный период:
Highest High = Highest(High, Length)
Lowest Low = Lowest(Low, Length)
Расчет стандартного отклонения цены закрытия за заданный период:
Standard Deviation = StdDev(Close, Length)
Расчет Довольно хорошего осциллятора:
PGO = (Close — (Highest High + Lowest Low) / 2) / Standard Deviation
где:
Close — текущая цена закрытия;
High — максимальная цена;
Low — минимальная цена;
Length — период расчета;
StdDev — стандартное отклонение.
* Также вместо стандартного отклонения можно использовать ATR.
Например, формула может быть такой:
PGO = (Close — MA) / ATR,
где:
MA — скользящее среднее цен закрытия за определённый период;
ATR — средний истинный диапазон за тот же период.
Пример расчета PGO
Предположим, трейдер использует 14-дневный период (N = 14) для вычисления Pretty Good Oscillator.
Рассчитайте скользящее среднее цены закрытия за 14 дней.
Вычислите 14-дневный ATR.
Определяют скользящее среднее ATR за 14 периодов.
Примените формулу, чтобы найти значение PGO.
Например:
Закрыть цену сегодня = 105
14-дневная степень магистра закрытия = 100
14-дневный ATR = 2
14-дневный MA ATR = 1,8
PGO = (105-100)/1.8 = 2.78
Значение PGO, равное 2,78, предполагает, что актив достигает территории перекупленности и может подвергнуться коррекции цен.
Пример кода индикатора PGO на Pine Script
// Pretty Good Oscillator script may be freely distributed under the MIT license.
study("Pretty Good Oscillator", shorttitle="PGO")
length = input(title="Length", type=integer, defval=14, minval=1)
upperLevel = input(title="Upper Level", type=float, step=0.1, defval=2.0)
lowerLevel = input(title="Lower Level", type=float, step=0.1, defval=-2.0)
maxLevel = input(title="Max Level", type=float, step=0.1, defval=4.0)
minLevel = input(title="Min Level", type=float, step=0.1, defval=-4.0)
highlightBreakouts = input(title="Highlight Overbought/Oversold Breakouts ?", type=bool, defval=true)
src = input(title="Source", type=source, defval=close)
pgo = (src - sma(src, length)) / atr(length)
pgoColor = pgo > upperLevel ? #0ebb23 : pgo < lowerLevel ? #ff0000 : #f4b77d
plot(pgo, title="PGO", linewidth=2, color=pgoColor, transp=0)
transparent = color(white, 100)
maxLevelPlot = hline(maxLevel, title="Max Level", linestyle=dotted, color=transparent)
upperLevelPlot = hline(upperLevel, title="Upper Level", linestyle=dotted)
hline(0, title="Zero Level", linestyle=dotted)
lowerLevelPlot = hline(lowerLevel, title="Lower Level", linestyle=dotted)
minLevelPlot = hline(minLevel, title="Min Level", linestyle=dotted, color=transparent)
fill(upperLevelPlot, lowerLevelPlot, color=purple, transp=95)
upperFillColor = pgo > upperLevel and highlightBreakouts ? green : transparent
lowerFillColor = pgo < lowerLevel and highlightBreakouts ? red : transparent
fill(maxLevelPlot, upperLevelPlot, color=upperFillColor, transp=90)
fill(minLevelPlot, lowerLevelPlot, color=lowerFillColor, transp=90)
Использование в торговле Pretty Good Oscillator, PGO
Индикатор PGO колеблется вокруг центральной линии, как и многие другие генераторы импульса. Когда линия PGO пересекает центральную линию, это говорит о том, что цена движется вверх, указывая на потенциал бычий импульс. И наоборот, когда линия PGO пересекает центральную линию, это предполагает, что цена движется вниз, что указывает на потенциал медвежий импульс.
Значима и амплитуда перемещений линии ПГО. Большие движения от центральной линии указывают на усиление импульс, в то время как меньшие движения предполагают менее значительную ценовую тенденцию. Как и в случае с любым осциллятором, экстремальные значения могут указывать на потенциальные условия перекупленности или перепродажи, сигнализируя о возможном развороте цен.
Уровни перекупленности и перепроданности:
● Значения выше +2 часто указывают на перекупленность рынка
● Значения ниже -2 часто указывают на перепроданность рынка
● Экстремальные значения (+3/-3 и выше/ниже) могут сигнализировать о значительной перекупленности/перепроданности и потенциальном развороте
Пересечение нулевой линии:

● Пересечение PGO нулевой линии снизу вверх может рассматриваться как бычий сигнал
● Пересечение PGO нулевой линии сверху вниз может рассматриваться как медвежий сигнал
Дивергенции:

● Бычья дивергенция: цена формирует новый минимум, а PGO - более высокий минимум
● Медвежья дивергенция: цена формирует новый максимум, а PGO - более низкий максимум
● Дивергенции часто предшествуют значительным разворотам тренда
Подтверждение тренда:
● Положительные значения PGO указывают на то, что цена находится выше среднего диапазона, что характерно для восходящего тренда
● Отрицательные значения PGO указывают на то, что цена находится ниже среднего диапазона, что характерно для нисходящего тренда
Оценка силы тренда:
● Чем дальше значение PGO от нуля, тем сильнее текущий тренд
● Сближение PGO с нулевой линией может указывать на ослабление тренда
Фильтрация сигналов:
● PGO можно использовать для фильтрации сигналов других индикаторов
● Например, можно рассматривать только бычьи сигналы, когда PGO положительный, и только медвежьи, когда PGO отрицательный
Выход из позиций:
● Экстремальные значения PGO могут использоваться как сигналы для фиксации прибыли
● Например, можно выходить из длинных позиций, когда PGO превышает +2, и из коротких, когда PGO падает ниже -2



















