Profile of Volume in Extreme Zones
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «profile of objema in the extreme zone.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор отображает профиль объёма на графике цены, разбивая диапазон цен на заданное количество бинов и накапливая объём торгов в каждом бине за период анализа. Он определяет ключевые уровни: POC (точку контроля — уровень с максимальным объёмом), медианную цену и среднюю цену, взвешенную по объёму. Также индикатор выделяет экстремальные зоны (Зона A и Зона B), задаваемые пользователем в процентах от диапазона цен, и раскрашивает их в разные цвета.
Профиль может отображаться слева или справа от текущих свечей с возможностью сдвига. Ширина баров профиля пропорциональна объёму, а толщина и направление настраиваются пользователем. Все линии (POC, медиана, среднее, границы зон) рисуются как пунктирные линии, расширяющиеся от текущего бара.
Индикатор работает в режиме наложения на график цены и полностью настраивается через параметры ввода: период анализа, количество бинов, процентные пороги зон, цвета элементов и параметры отображения. Предназначен для образовательных целей.
Настройки программы
| Настройка | Описание |
|---|---|
| lookback | Период анализа в количестве баров, за который рассчитывается профиль объёма. Диапазон от 10 до 1000, по умолчанию 200. |
| bins | Количество бинов (уровней цен), на которые разбивается диапазон цен для расчёта профиля объёма. Диапазон от 20 до 200, по умолчанию 120. |
| zone_b_pct | Процент Зоны B от диапазона цен, определяющий ширину экстремальной зоны. Диапазон от 0.5 до 95.0, по умолчанию 2.5. |
| zone_a_pct | Процент Зоны A от диапазона цен, определяющий ширину промежуточной зоны. Диапазон от 0.1 до 67.0, по умолчанию 14.0. |
| show_poc | Включает или отключает отображение линии POC (уровня с максимальным объёмом). |
| show_median | Включает или отключает отображение медианной линии. |
| show_mean | Включает или отключает отображение линии средней цены, взвешенной по объёму. |
| show_zone_lines | Включает или отключает отображение пунктирных линий границ зон. |
| zone_b_upper | Цвет верхней части Зоны B — экстремальной зоны у максимума цены. |
| zone_a_upper | Цвет верхней части Зоны A. |
| zone_center | Цвет центральной зоны профиля — участка между границами Зоны A. |
| zone_a_lower | Цвет нижней части Зоны A — промежуточной зоны между центральной и экстремальной. |
| zone_b_lower | Цвет нижней части Зоны B — экстремальной зоны у минимума цены. |
| poc_color | Цвет линии POC — уровня цены с максимальным объёмом торгов. |
| median_color | Цвет медианной линии — середины диапазона цен. |
| mean_color | Цвет линии средней цены, взвешенной по объёму. |
| zone_line_b_upper | Цвет пунктирной линии верхней границы Зоны B. |
| zone_line_a_upper | Цвет пунктирной линии верхней границы Зоны A. |
| zone_line_a_lower | Цвет пунктирной линии нижней границы Зоны A. |
| zone_line_b_lower | Цвет пунктирной линии нижней границы Зоны B. |
| bar_width_multiplier | Множитель, определяющий максимальную ширину баров профиля. Значение по умолчанию 1.0, диапазон от 0.1 до 2.0. |
| bar_thickness | Задаёт толщину линий и границ баров профиля объёма. Допустимые значения от 1 до 5. |
| profile_direction | Направление отображения профиля объёма относительно свечей: «Справа» или «Слева». |
| profile_offset | Сдвиг профиля в количестве баров от текущего бара. Диапазон от -100 до 100, по умолчанию 50. |
Поиск по коду файла
indicator("<[Профиль Объема в Экстремальных Зонах]>", shorttitle="<[VPEZ]>", overlay=true, max_bars_back=5000, max_boxes_count=500, max_lines_count=50)
lookback = input.int(200, "Период анализа", minval=10, maxval=1000)
bins = input.int(120, "Количество бинов", minval=20, maxval=200)
zone_b_pct = input.float(2.5, "Процент Зоны B", minval=0.5, maxval=95.0, step=0.5)
zone_a_pct = input.float(14.0, "Процент Зоны A", minval=0.1, maxval=67.0, step=0.1)
show_poc = input.bool(true, "Показывать линию POC")
show_median = input.bool(true, "Показывать медианную линию")
show_mean = input.bool(true, "Показывать линию среднего")
show_zone_lines = input.bool(true, "Показывать линии зон")
zone_b_upper = input.color(#ff5252cc, "Верхняя Зона B")
zone_a_upper = input.color(#ff9800b3, "Верхняя Зона A")
zone_center = input.color(#787b8633, "Центральная Зона")
zone_a_lower = input.color(#00897bb3, "Нижняя Зона A")
zone_b_lower = input.color(#00e676cc, "Нижняя Зона B")
poc_color = input.color(#787b86, "Линия POC")
median_color = input.color(#9c27b0, "Медианная линия")
mean_color = input.color(#e040fb, "Линия среднего")
zone_line_b_upper = input.color(#ff5252, "Линия верхней B")
zone_line_a_upper = input.color(#ff9800, "Линия верхней A")
zone_line_a_lower = input.color(#00897b, "Линия нижней A")
zone_line_b_lower = input.color(#00e676, "Линия нижней B")
bar_width_multiplier = input.float(1.0, "Множитель ширины баров", minval=0.1, maxval=2.0, step=0.1)
bar_thickness = input.int(1, "Толщина баров", minval=1, maxval=5)
profile_direction = input.string("Слева", "Направление профиля", options = ["Справа", "Слева"])
profile_offset = input.int(50, "Сдвиг профиля", minval = -100, maxval = 100)
var float[] volume_bins = array.new<float>()
var float[] price_levels = array.new<float>()
var box[] volume_boxes = array.new<box>()
var line[] zone_lines = array.new<line>()
if barstate.isfirst or array.size(volume_bins) != bins
array.clear(volume_bins)
array.clear(price_levels)
for i = 0 to bins - 1
array.push(volume_bins, 0.0)
array.push(price_levels, 0.0)
get_price_range() =>
var float max_price = na
var float min_price = na
max_price := high
min_price := low
for i = 1 to math.min(lookback - 1, bar_index)
max_price := math.max(max_price, high[i])
min_price := math.min(min_price, low[i])
[min_price, max_price]
get_bin_index(price, min_price, max_price) =>
if max_price == min_price
0
else
bin_idx = math.floor((price - min_price) / (max_price - min_price) * bins)
math.max(0, math.min(bins - 1, bin_idx))
clear_drawings() =>
for box_item in volume_boxes
box.delete(box_item)
array.clear(volume_boxes)
for line_item in zone_lines
line.delete(line_item)
array.clear(zone_lines)
if barstate.isconfirmed or barstate.islast
clear_drawings()
for i = 0 to bins - 1
array.set(volume_bins, i, 0.0)
[min_price, max_price] = get_price_range()
bin_height = (max_price - min_price) / bins
for i = 0 to bins - 1
array.set(price_levels, i, min_price + (i + 0.5) * bin_height)
for i = 0 to math.min(lookback - 1, bar_index)
bar_high = high[i]
bar_low = low[i]
bar_volume = volume[i]
start_bin = get_bin_index(bar_low, min_price, max_price)
end_bin = get_bin_index(bar_high, min_price, max_price)
bins_touched = math.max(1, end_bin - start_bin + 1)
volume_per_bin = bar_volume / bins_touched
for j = start_bin to end_bin
current_volume = array.get(volume_bins, j)
array.set(volume_bins, j, current_volume + volume_per_bin)
float total_volume = 0.0
float max_volume = 0.0
float poc_price = 0.0
for i = 0 to bins - 1
bin_volume = array.get(volume_bins, i)
total_volume += bin_volume
if bin_volume > max_volume
max_volume := bin_volume
poc_price := array.get(price_levels, i)
float zone_b_upper_price = min_price + (max_price - min_price) * (100 - zone_b_pct) / 100
float zone_a_upper_price = min_price + (max_price - min_price) * (100 - zone_b_pct - zone_a_Показано первые 50% кода (символов: 6489)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.