Скрипт Pine Script v5: Поиск скрытой медвежьей дивергенции по RSI с request.security

Скрипт Pine Script v5: Поиск скрытой медвежьей дивергенции по RSI с request.security Pine Script
Подробная инструкция по созданию Pine Script v5 для обнаружения скрытой медвежьей дивергенции по RSI, используя функцию request.security для анализа данных с более высокого таймфрейма.
Суть: Данная статья предоставляет Pine Script v5 код и пошаговую инструкцию для обнаружения скрытой медвежьей дивергенции (Hidden Bearish Divergence) по индикатору RSI, используя функцию request.security для получения данных RSI с более высокого таймфрейма. Скрипт идентифицирует ситуации, когда цена формирует более высокий минимум, а RSI — более низкий минимум, что является сигналом продолжения нисходящего тренда.

Исходный код

Представленный ниже Pine Script v5 код разработан для автоматического поиска скрытой медвежьей дивергенции на графике. Он использует индикатор RSI и функцию request.security для получения значений RSI с указанного более высокого таймфрейма. Это позволяет анализировать трендовые условия на старшем таймфрейме, выявляя потенциальные точки продолжения нисходящего движения на текущем графике. Для обнаружения дивергенции скрипт ищет два последовательных минимума цены и два соответствующих минимума RSI, сравнивая их значения и временные метки.


//@version=5
indicator("Hidden Bearish Divergence (RSI, HTF)", overlay=true, max_bars_back=500)

// --- Входные параметры ---
// Длина RSI
rsi_length = input.int(14, 'RSI Length', minval=1)
// Количество баров слева и справа для определения пивотов (ta.pivotlow)
left_bars = input.int(5, 'Pivot Left Bars', minval=1)
right_bars = input.int(5, 'Pivot Right Bars', minval=1)
// Максимальное количество баров для поиска дивергенции между двумя пивотами
max_divergence_bars = input.int(50, 'Max Divergence Lookback Bars', minval=10)
// Высший таймфрейм для RSI (например, "60" для 1 часа, "240" для 4 часов)
htf = input.timeframe('60', 'Higher Timeframe')

// --- Расчет RSI текущего таймфрейма ---
rsi_current = ta.rsi(close, rsi_length)

// --- Получение RSI с высшего таймфрейма через request.security ---
// Используем rsi_current как выражение для request.security.
// lookahead=barmerge.lookahead_on критически важен для предотвращения перерисовки
// при получении данных с более высокого таймфрейма.
htf_rsi = request.security(syminfo.tickerid, htf, rsi_current, lookahead=barmerge.lookahead_on)

// --- Логика обнаружения дивергенции ---
// Переменные для хранения двух последних пивотных минимумов цены и RSI
var float p_low1 = na, p_low2 = na // p_low1 - более свежий минимум цены, p_low2 - предыдущий
var int p_idx1 = na, p_idx2 = na   // p_idx1 - индекс более свежего минимума цены, p_idx2 - предыдущего
var float r_low1 = na, r_low2 = na // r_low1 - более свежий минимум RSI, r_low2 - предыдущий
var int r_idx1 = na, r_idx2 = na   // r_idx1 - индекс более свежего минимума RSI, r_idx2 - предыдущего

// Обнаружение пивотных минимумов цены и RSI
is_price_pivot_low = ta.pivotlow(low, left_bars, right_bars)
is_rsi_pivot_low = ta.pivotlow(htf_rsi, left_bars, right_bars)

// Обновление последних пивотных минимумов цены
if is_price_pivot_low
    p_low2 := p_low1
    p_idx2 := p_idx1
    p_low1 := low[right_bars] // Значение в точке пивота
    p_idx1 := bar_index - right_bars // Индекс точки пивота

// Обновление последних пивотных минимумов RSI
if is_rsi_pivot_low
    r_low2 := r_low1
    r_idx2 := r_idx1
    r_low1 := htf_rsi[right_bars] // Значение в точке пивота
    r_idx1 := bar_index - right_bars // Индекс точки пивота

// Проверка условий скрытой медвежьей дивергенции
// Условия:
// 1. Цена формирует более высокий минимум (Higher Low).
// 2. RSI формирует более низкий минимум (Lower Low).
// 3. Пивоты должны быть выровнены по времени (происходить примерно в одно и то же время).
// 4. Более старый пивот должен находиться в пределах max_divergence_bars.

var bool is_hidden_bearish = false
is_hidden_bearish := false // Сброс на каждом баре

if not na(p_low1) and not na(p_low2) and not na(r_low1) and not na(r_low2)
    // Убедимся, что пивоты упорядочены по времени (более свежий > предыдущего)
    if p_idx1 > p_idx2 and r_idx1 > r_idx2
        // Убедимся, что более старые пивоты находятся в пределах окна поиска
        if (bar_index - p_idx2 <= max_divergence_bars) and (bar_index - r_idx2 <= max_divergence_bars)
            // Проверка выравнивания пивотов цены и RSI по времени
            // Текущий пивот цены (p_idx1) должен быть близок к текущему пивоту RSI (r_idx1)
            // Предыдущий пивот цены (p_idx2) должен быть близок к предыдущему пивоту RSI (r_idx2)
            if math.abs(p_idx1 - r_idx1) <= right_bars and math.abs(p_idx2 - r_idx2) <= right_bars
                // Условия скрытой медвежьей дивергенции:
                // Цена: Higher Low (p_low1 > p_low2)
                // RSI: Lower Low (r_low1 < r_low2)
                if p_low1 > p_low2 and r_low1 < r_low2
                    is_hidden_bearish := true

// --- Визуализация --- 
// Отображение RSI с высшего таймфрейма
plot(htf_rsi, 'HTF RSI', color.new(color.blue, 0), linewidth=2)
// Отображение RSI текущего таймфрейма (для сравнения)
plot(rsi_current, 'Current RSI', color.new(color.orange, 0), linewidth=1)

// Отмечаем скрытую медвежью дивергенцию на графике
plotshape(is_hidden_bearish, title='Hidden Bearish Divergence', location=location.abovebar, color=color.new(color.red, 0), style=shape.triangledown, size=size.small)

// Опционально: отображение пивотов для отладки/визуализации
// plotchar(is_price_pivot_low, 'Price Pivot Low', 'P', location.belowbar, color.new(color.green, 0), size=size.tiny)
// plotchar(is_rsi_pivot_low, 'RSI Pivot Low', 'R', location.abovebar, color.new(color.purple, 0), size=size.tiny)

// Дополнительные линии для визуализации дивергенции (более сложная реализация, здесь не включена для простоты)
// Для отрисовки линий необходимо сохранять индексы и значения конкретных пивотов, сформировавших дивергенцию.

Разбор параметров

  • rsi_length: Длина периода для расчета индикатора RSI. Стандартное значение — 14.
  • left_bars: Количество баров слева от центрального бара, используемых функцией ta.pivotlow для определения пивотного минимума. Чем больше значение, тем более значимые пивоты будут найдены.
  • right_bars: Количество баров справа от центрального бара, используемых функцией ta.pivotlow для определения пивотного минимума. Аналогично left_bars, влияет на значимость пивотов.
  • max_divergence_bars: Максимальное количество баров, в пределах которого скрипт будет искать два пивота для формирования дивергенции. Это окно поиска для предыдущего пивота относительно текущего.
  • htf: (Higher Timeframe) Высший таймфрейм, с которого будут запрашиваться данные RSI с помощью request.security. Например, '60' для часового графика, '240' для 4-часового. Использование более высокого таймфрейма помогает сгладить шум и подтвердить тренд, что особенно полезно при поиске скрытых дивергенций. Подробнее о работе с данными с разных таймфреймов можно узнать в статье Интеграция Open Interest из Binance Futures в Pine Script v5 через request.seed, где также используется механизм запроса данных.

Как запустить

Для того чтобы использовать данный скрипт в TradingView и начать поиск скрытой медвежьей дивергенции, выполните следующие шаги:

  1. Откройте TradingView: Перейдите на сайт TradingView и откройте график интересующего вас актива.

  2. Откройте Pine Editor: В нижней части экрана TradingView найдите вкладку 'Pine Editor' и нажмите на нее.

  3. Создайте новый скрипт: Удалите весь существующий код в редакторе (если он есть) и вставьте предоставленный выше код в окно Pine Editor.

  4. Добавьте на график: Нажмите кнопку 'Add to Chart' (Добавить на график) в правом верхнем углу Pine Editor.

  5. Настройте параметры: После добавления скрипта на график, он появится в списке индикаторов. Нажмите на значок шестеренки (Настройки) рядом с названием индикатора 'Hidden Bearish Divergence (RSI, HTF)'. В открывшемся окне вы сможете настроить параметры, такие как RSI Length, Pivot Left Bars, Pivot Right Bars, Max Divergence Lookback Bars и Higher Timeframe. Экспериментируйте с этими значениями, чтобы найти оптимальные настройки для вашего стиля торговли и актива. Например, для более точного бэктеста стратегий на различных типах графиков, таких как ренко, может потребоваться адаптация параметров, как описано в статье Бэктест стратегии на ренко-графиках в Pine Script v5 без перерисовки.

  6. Анализируйте сигналы: Скрипт будет автоматически отмечать на графике места обнаружения скрытой медвежьей дивергенции красными треугольниками, указывающими вниз. Эти сигналы могут служить подтверждением продолжения нисходящего тренда. Помните, что дивергенции лучше всего работают в сочетании с другими инструментами технического анализа, такими как уровни поддержки/сопротивления и объем, для фильтрации ложных сигналов, о чем говорится в статье Фильтрация ложных пробоев уровней в Pine Script v5: RSI и Объем.

Оцените статью
FinFluct