Session-Anchored CVD в Pine Script v5: Полное руководство

Session-Anchored CVD в Pine Script v5: Полное руководство Pine Script
Создаем профессиональный индикатор кумулятивной дельты объема (CVD) с привязкой к торговым сессиям в Pine Script v5. Пошаговый код и разбор.
Суть: Индикатор Session-Anchored CVD (Cumulative Volume Delta) отслеживает накопленную разницу между рыночными покупками и продажами внутри конкретной торговой сессии. В Pine Script v5 это реализуется через функцию request.security_lower_tf, которая собирает детальные данные с младших таймфреймов и сбрасывает накопленное значение при наступлении новой сессии.

Исходный код

Ниже представлен готовый к использованию код индикатора для TradingView. Он использует массивы для обработки внутрибарных данных и автоматически сбрасывает кумулятивную дельту при начале новой торговой сессии. Обратите внимание, что при работе с младшими таймфреймами вы можете столкнуться с ограничениями платформы. О том, как их обойти, читайте в нашей статье: Как обойти лимит 15 минут в request.security_lower_tf в Pine Script v5.

//@version=5
indicator("Session-Anchored CVD (Pine v5)", shorttitle="Session CVD", format=format.volume, precision=0)

// Inputs
ltf_tf = input.timeframe("1", title="Lower Timeframe for Delta")
session_spec = input.session("0900-1600:23456", title="Session Hours")

// Detect new session start
in_session = not na(time("D", session_spec))
new_session = in_session and not in_session[1]

// Request lower timeframe data
ltf_closes = request.security_lower_tf(syminfo.tickerid, ltf_tf, close)
ltf_opens  = request.security_lower_tf(syminfo.tickerid, ltf_tf, open)
ltf_vols   = request.security_lower_tf(syminfo.tickerid, ltf_tf, volume)

// Calculate delta
var float cvd = 0.0

if new_session
    cvd := 0.0

float current_bar_delta = 0.0
if array.size(ltf_closes) > 0
    for i = 0 to array.size(ltf_closes) - 1
        c = array.get(ltf_closes, i)
        o = array.get(ltf_opens, i)
        v = array.get(ltf_vols, i)
        if c > o
            current_bar_delta += v
        else if c < o
            current_bar_delta -= v

if in_session
    cvd := cvd + current_bar_delta
else
    cvd := 0.0

// Plotting
cvd_color = cvd >= 0 ? color.new(color.green, 30) : color.new(color.red, 30)
plot(cvd, title="CVD", color=cvd_color, style=plot.style_columns)

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

  • ltf_tf: Младший таймфрейм (Lower Timeframe), используемый для расчета дельты внутри текущего бара. Чем меньше таймфрейм, тем точнее расчет дельты объема.
  • session_spec: Спецификация торговой сессии (например, 0900-1600:23456 для основной сессии будних дней), определяющая моменты сброса кумулятивного значения.

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

Для запуска индикатора откройте Pine Editor в TradingView, скопируйте представленный выше код, вставьте его в редактор и нажмите кнопку ‘Добавить на график’. Этот индикатор отлично подходит для анализа рыночного дисбаланса и может быть интегрирован в торговые системы. Например, вы можете использовать сигналы CVD для реализации сложных стратегий выхода, таких как Мульти-лимитный Take Profit в Pine Script v5: Пошаговое руководство.

Пока некоторые трейдеры пытаются настроить Динамический bgcolor по фазам луны в Pine Script v5, профессиональные кванты используют объективные данные сведения ордеров и объемов, такие как кумулятивная дельта, для поиска реального институционального следа на рынке.

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