Привет, Хабр!
Я давно торгую на рынках криптовалют, металлов, форексе. И большинство трейдеров знает, что на финансовых рынках значительная часть инструментов движется не изолированно, а в составе коррелирующих групп. Валютные пары, индексы, криптоактивы и производные индексы часто демонстрируют согласованное поведение, поскольку отражают одну и ту же макроэкономическую или риск среду.
Среды таких активов я выделяю особые 'триады активов' - активы с максимальной корреляцией, где расхождение является прямым сигналом. Эти триады - почти общепризнанные тройки. Давайте пройдёмся по основным из них:
Триада FOREX: GBPUSD, EURUSD, 1/DXY
Триада CRYPTO: BTC, ETH, TOTAL3
Триада индексов: Dow Jones, Nasdaq, ES500
Триада металлов: золото, платина, серебро.
В данной статье рассмотрим сигнал PSP (Price Strength Polarity) — ситуация, при которой на коррелирующих активах формируются свечи противоположного направления. Также я сделаю полный разбор Pine Script-индикатора, который автоматически обнаруживает такие моменты и визуально подсвечивает соответствующие свечи на графике. Подобные инструменты на дистанции экономят огромное количество времени. Подобный скрипт я сделал для структуры, SMT и прочих формаций. Поделюсь ими в следующий статьях.
Код индикатора: ссылка . Также по написанию этого индикатора у меня есть видеоурок в рамках нового курса по pine script. Если для вас такой формат удобнее - welcome.
Что такое PSP и как его использовать
Определение PSP
PSP (Price Strength Polarity) — это состоян��е рынка, при котором два или более коррелирующих инструмента из триад на одном и том же таймфрейме формируют свечи противоположного направления.
Иными словами:
один инструмент закрывается выше открытия (бычья свеча),
другой — ниже открытия (медвежья свеча).
Это указывает на расхождение силы (дивергенцию) между связанными рынками.
Практическое применение PSP
PSP не является самостоятельной точкой входа, но отлично работает как подтверждение для работы со структурой (сломы или подтверждения), свипа ликвидности, образования качественной сильной неэффективности, потока приказов (трендового движения), либо просто фильтр тренда.
Обратите внимание - нам не важно, медвежий PSP или бычий на конкретном графике. Важно то, как с ним работают последующие 1-2 свечи. Если видим трендовое движение - psp подтвердил его. Если он формируется внутри трендового движения - это тоже подтвреждение чаще всего именно на продолжение тренда.
На практике PSP на экстремумах усиливает вероятность разворота, а PSP внутри диапазона часто указывает на ложное движение.
Что такое Pine Script (кратко)
Pine Script — это специализированный язык программирования, разработанный TradingView для создания индикаторов, стратегий и визуальных инструментов анализа рынка.
Ключевые особенности: автоматическая синхронизация по таймфреймам, встроенные простые функции для работы с историческими и реалтайм данными, возможность запрашивать данные через встроенные функции (request.security - расскажу позже), а также в нём даже есть встроенные функции для расчёта самых популярных индикаторов. Для новичков pine script подходит идеально и позволяет писать вспомогательные инструменты без труда.
Полный разбор Pine Script-кода
Ниже приведён индикатор, который сравнивает текущий инструмент с референсным, определяет наличие PSP, окрашивает свечи в зависимости от типа сигнала и выбранной цветовой схемы.
Объявление индикатора
//@version=6
indicator("PSP with Color Themes", overlay=true)Используется Pine Script v6
overlay=true— индикатор рисуется непосредственно поверх свечного графика
Входные параметры
refSymbol = input.symbol("BINANCE:ETHUSDT", "Reference Symbol")Позволяет выбрать актив, с которым будет сравниваться текущий график (например, BTCUSDT ↔ ETHUSDT).
inverseMode = input.bool(false, "Inverse Correlation Mode")false— классический PSP (свечи противоположного цвета)true— инверсный режим (поиск синхронного движения)
Это нужно и важно для работы с графиками с обратном корреляцией. Самый известный пример - DXY + EURUSD/GBPUSD
Система цветовых тем
colorTheme = input.string("Green/Red", "Color Theme",
options = ["Green/Red", "Blue/Orange", "Purple/Yellow", "Teal/Pink", "Custom"],
group = "Colors")Позволяет адаптировать визуал под разные стили графиков и фон. Мы впоследствии сделаем ряд встроенных тем, но также позволим юзеру сделать свою тему. В целом, это не так важно для личного использования, но всё же реализуется довольно легко.
Позволяем пользователю задать свои цвета для свечей, используются только при выборе Custom темы :
customBullColor = input.color(color.new(#00ff08, 40), "Custom Bull Color", group = "Colors")
customBearColor = input.color(color.new(#fc0000, 40), "Custom Bear Color", group = "Colors")Управление прозрачностью
opacity = input.int(40, "Opacity", minval = 0, maxval = 100, group = "Colors")Позволяет сделать подсветку ненавязчивой и не перекрывать цену.
Функции выбора цвета
getBullColor(theme) =>
switch theme
"Green/Red" => color.new(#00ff08, opacity)
"Blue/Orange" => color.new(#2196F3, opacity)
"Purple/Yellow" => color.new(#9C27B0, opacity)
"Teal/Pink" => color.new(#009688, opacity)
"Custom" => color.new(customBullColor, opacity)Здесь используются:
функции (в Pine это полноценные first-class сущности),
switch— удобная альтернатива цепочкеif.
Аналогичная логика реализована для медвежьего цвета.
Это делает код легко адаптируемым под любые цвета, расширяемым и легко читаемым. Работа с цветами тут важна, так как все используют разные темы и стили для графиков в tradingview и это поможет выделить наши psp-свечи.
Логика PSP
Направление текущей свечи
isBull_curr = close > open
isBear_curr = close < openПолучение данных референсного инструмента
[refOpen, refClose] = request.security(refSymbol, timeframe.period, [open, close])Данные берутся на том же таймфрейме, что и текущий график, гарантируется синхронизация свечей.
Запрашиваем мы данные с помощью функции request.security. Она возвращает список данных. Аргументы - символ, период (timeframe.period вернёт выбранный на графике период автоматически), данные которые мы хотим получить. Формат данных - OHLCV (open, high, low, close, volume). Колонки именованные, так что можно просто прописывать что именно мы хотим получить. Запишем мы наши open и close в переменные refOpen, refClose.
Направление референсной свечи
isBull_ref = refClose > refOpen
isBear_ref = refClose < refOpenФормирование сигнала PSP
psp_direct = (isBull_curr and isBear_ref) or (isBear_curr and isBull_ref)
psp_inverse = (isBull_curr and isBull_ref) or (isBear_curr and isBear_ref)
pspSignal = inverseMode ? psp_inverse : psp_directЗдесь реализована универсальная модель, поддерживающая и прямую и инверсионную дивергенцию. Мы задаём сразу две bool переменные и дальше с помощью тернарного оператора выбираем, какая из них нам всё-таки нужна.
Классификация сигнала
pspBullish = pspSignal and isBull_curr
pspBearish = pspSignal and isBear_currНужно это для разделения сигналов по виду и цветам.
3.6 Визуализация
barcolor(
pspBullish ? bullishColor :
pspBearish ? bearishColor :
na)Применяем функцию barcolor и используем в качестве аргумента ещё раз тернарный оператор. Функция barcolor позволяет окрасить тело японской свечи в необходимый нам цвет. Здесь тернарный оператор выполняет следующую функцию: если psp бычий -> красим в цвет бычьего psp, если psp медвежий -> красим в цвет медвежьего psp, если psp нет -> оставляем в аргументе na (аналог None из других ЯП).
4. Как это выглядит на графике и как использовать

подсвеченные свечи указывают на момент расхождения силы,
сигнал всегда привязан к конкретной свече и таймфрейму.
Практические рекомендации:
использовать PSP только на закрытии свечи,
комбинировать с рыночной структурой,
не использовать как одиночный вход.
И также отдельно хотел бы выделить важную деталь - PSP это изначально нейтральная зона поддержки/сопротивления. Она выступает подтверждением тренда или разворота. Если вы видите тест этой зоны ->реакцию = можно пробовать торговать по тренду, который задаёт PSP. Вот примеры буквально последних моих сделок по BTC, открытых пару дней назад:

Заключение
PSP — это простой по формуле, но крайне мощный межрыночный сигнал, который позволяет увидеть то, что не видно при анализе одного инструмента.
Pine Script, благодаря request.security, даёт возможность реализовать такой анализ лаконично, точно и визуально аккуратно.
Представленный код мож��т служить основной для более сложных фильтров, частью полноценной торговой системы, инструментов для подтверждения своей идеи, основанной на других закономерностях/анализе.
