← К каталогу
Исходный код · ID 4674

High-Volume Points with a Zone of Maximum Reaction

high-volume points with a zone of maximum reaction.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «High-Volume Points with a Zone of Maximum Reaction» отображает на графике значимые точки максимума и минимума цены, окружённые зонами реакции. Для определения пивотов используются встроенные функции Pine Script — ta.pivothigh и ta.pivotlow, а ширина зон рассчитывается на основе среднего истинного диапазона (ATR). Вокруг пивотов рисуются круги, диаметр которых пропорционален нормализованному объёму торгов, что позволяет визуально оценить значимость каждой точки.

Индикатор также отрисовывает уровни, проходящие через пивоты, и отслеживает их пересечение ценой, меняя стиль линий при пересечении. Доступны настройки фильтрации по объёму, цветов зон и кругов, а также параметры отображения уровней. Все расчёты выполняются средствами Pine Script и отображаются поверх графика в режиме реального времени.

Продукт представляет собой индикатор технического анализа для платформы TradingView, предназначенный для визуализации зон высокой активности объёма вокруг ключевых ценовых пивотов. Он не является автоматическим советником и не выполняет симуляцию торговых операций.

Настройки программы

НастройкаОписание
lookback Период поиска максимума и минимума цены для определения зон реакции и записи значимых пивотов.
multiplier Множитель для расчёта ширины зон реакции на основе ATR. Увеличение значения расширяет зоны вокруг пивотов.
high_col Цвет отображения зоны и маркеров для пивота максимума (верхнего пивота).
low_col Цвет отображения зоны и маркеров для пивота минимума (нижнего пивота).
step Диаметр кругов, отрисованных вокруг пивотов. Регулирует визуальный размер маркеров объёмных точек.
filter_vol Порог объёма для фильтрации отображаемых точек. Значение определяет минимальный нормализованный объём, при котором круг вокруг пивота будет отрисован.
leftBars Количество баров слева от пивота, используемое при определении точек разворота через ta.pivothigh и ta.pivotlow.
show_lvl Логический переключатель, определяющий отображение уровней на графике. При отключении уровни удаляются.
upper_col Цвет кругов и уровней, связанных с пивотами максимума.
lower_col Цвет кругов и уровней, связанных с пивотами минимума.
Получить полный код

Поиск по коду файла

indicator("<[Точки большого объема c Зона максимальной реакции]>", '<{BV MR Zones}>', overlay = true, max_polylines_count = 100, max_lines_count = 17, max_labels_count = 500, max_bars_back = 1000)

var high_i = int(na)
var high_v = float(na)
var low_i = int(na)
var low_v = float(na)

lookback = input(72, title="Период поиска максимума и минимума")
multiplier = input.float(1, "Ширина зон", step = 0.1, inline = "h/l")
high_col = input.color(color.orange, "", inline = "h/l")
low_col  = input.color(color.blue, "", inline = "h/l")

highest = ta.highest(lookback)
lowest = ta.lowest(lookback)

atr = ta.atr(200) * multiplier

if high[1] == highest[1] and high < highest
    high_i := bar_index-1
    high_v := high[1]

if low[1] == lowest[1] and low > lowest
    low_i := bar_index-1
    low_v := low[1]

draw_zone(x, y, h_l, color)=>

    dist = h_l ? -atr : atr

    line.delete(line.new(x, y, bar_index, y, color = color, style = line.style_solid, width = 2)[1])
    line.delete(line.new(x+3, y+dist, bar_index, y+dist, color = color, style = line.style_dashed)[1])
    label.delete(label.new(bar_index, y, str.tostring(y, "#,###.####"), color = color(na), style = label.style_label_left, textcolor = color)[1])

if barstate.islast

    size = bar_index - (high_i > low_i ? low_i : high_i)

    draw_zone(high_i, high_v, true, high_col)
    draw_zone(low_i, low_v, false, low_col)
    mid = math.avg(high_v, low_v)
    mid_index = bar_index -  size/2

    line.delete(line.new(mid_index, mid, bar_index, mid, color = chart.fg_color, style = line.style_dashed)[1])
    label.delete(label.new(bar_index, mid, str.tostring(mid, "#,###.####"), color = color(na), style = label.style_label_left, textcolor = chart.fg_color)[1])

    for i = 0 to size

        index = bar_index-i-2

        if low[i+3] > low_v+atr and low[i+2] < low_v+atr and high[i+1] > low_v+atr and index > low_i
            label.new(index, low[i+2], "", style = label.style_label_up, color = low_col, size = size.tiny)

        if high[i+3] < high_v-atr and high[i+2] > high_v-atr and low[i+1] < high_v-atr and index > high_i
            label.new(index, high[i+2], "", style = label.style_label_down, color = high_col, size = size.tiny)

step = input.float(0.6, 'Диаметр кругов', step = 0.1, group = 'Настройки')

filter_vol = input.float(2, 'Фильтр точек по объему', step = 0.1, group = 'Настройки', minval = 0, maxval = 6)

int leftBars = input(15, "Длина")
int rightBars = leftBars

show_lvl = input.bool(true, 'Показывать уровни', group = 'Визуализация')

float xScale = 2.0
float yScale = 0.5 * ta.atr(500)

color upper_col = input.color(#fda05e, "", inline = "1")
color lower_col = input.color(#2fd68e, "", inline = "1")

int width1 = 0
int width2 = 0

var points = array.new<chart.point>()
var levels = array.new<line>()

ph = ta.pivothigh(leftBars, rightBars)
pl = ta.pivotlow(leftBars, rightBars)

volume_ = math.sum(volume, leftBars * 2)

float vol = volume_

min_vol = ta.lowest(volume_, 300)
max_vol = ta.highest(volume_, 300)

reference_vol = ta.percentile_nearest_rank(volume_, 1000, 95)
norm_vol = volume_ / reference_vol * 5

check_cross(arrayOfLines) =>
    int qtyOfLines = array.size(arrayOfLines)

    for lineNo = 0 to qtyOfLines > 0 ? qtyOfLines - 1 : na by 1

        if lineNo < array.siz

Показано первые 50% кода (символов: 5074)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
507,40₽ ≈ $6.23