Liquidity Trend Heatmap [BigBeluga]
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator_liquidity_trend_heatmap_bigbeluga_for_tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «Liquidity Trend Heatmap [BigBeluga]» отображает на графике тепловую карту ликвидности из 25 ценовых уровней, рассчитанных на основе распределения объёма за заданный период откатов. Каждый уровень окрашивается в зависимости от объёма и направления тренда: бычьи зоны — одним цветом, медвежьих — другим, а уровень с наибольшим объёмом (POC) выделяется отдельным цветом. Тренд определяется с помощью скользящей средней на основе EMA от SMA, а границы коридора рассчитываются с использованием ATR. Индикатор рисует графические отметки на уровне цен, формирует информационную панель с данными о тренде и POC, а также поддерживает настройку размера дашборда и формы маркеров.
Настройки программы
| Настройка | Описание |
|---|---|
| showTrend | Включает или отключает отображение трендовой линии на графике. |
| length | Количество баров, используемых для расчёта скользящей средней тренда. |
| lookback | Количество исторических баров, анализируемых для определения ценового диапазона и распределения объёма. |
| shapeType | Визуальная форма маркеров узлов ликвидности на графике (квадрат, круг, ромб, крест или X). |
| minVolPercent | Минимальный процент объёма относительно POC, необходимый для отображения узла ликвидности. Более высокие значения показывают только наиболее значимые зоны. |
| colorUp | Цвет, применяемый к бычьим зонам тепловой карты ликвидности, когда цена находится выше трендовой линии. |
| colorDn | Цвет, применяемый к медвежьим зонам тепловой карты ликвидности, когда цена находится ниже трендовой линии. |
| showPOC | Включает или отключает отображение уровня точки контроля (POC) на графике. |
| pocColor | Цвет, используемый для выделения уровня точки контроля (POC) — ценового уровня с наибольшим накопленным объёмом. |
| table_size | Размер информационной панели с данными о тренде и POC (очень маленький, маленький, нормальный или большой). |
Поиск по коду файла
indicator("Liquidity Trend Heatmap [BigBeluga]", "LT Heatmap [BigBeluga]", overlay=true, calc_bars_count = 3000, max_labels_count = 500)
grp_main = "Liquidity Trend Settings"
showTrend = input.bool(true, "Show Trend Line", group=grp_main)
length = input.int(50, "Trend Length", tooltip="Number of bars used for the moving average trend calculation.", group=grp_main)
lookback = input.int(500, "Lookback Period", tooltip="The number of historical bars analyzed to determine the price range and volume distribution.", group=grp_main)
grp_colors = "Colors & Visuals"
shapeType = input.string("Square", "Shape Type", options=["Square", "Circle", "Diamond", "Cross", "X"], tooltip="Select the visual shape for the heatmap liquidity nodes.", group=grp_colors)
minVolPercent = input.int(50, "Heatmap Threshold %", tooltip="The minimum volume percentage (0-100) relative to the POC required to display a liquidity node. Higher values show only the most significant zones.", group=grp_colors)/100
colorUp = input.color(color.rgb(40, 211, 168), "Bullish Zone Color", inline="", tooltip="Color applied to liquidity nodes when the trend is bullish.", group=grp_colors)
colorDn = input.color(color.rgb(255, 82, 82), "Bearish Zone Color", inline="", tooltip="Color applied to liquidity nodes when the trend is bearish.", group=grp_colors)
showPOC = input.bool(true, "Show POC", inline="poc_group", tooltip="Highlight the Point of Control (the price level with the highest accumulated volume).", group=grp_colors)
pocColor = input.color(color.orange, "", inline="poc_group", tooltip="The color used to highlight the Point of Control (POC) level.", group=grp_colors)
grp_dash = "Dashboard Settings"
table_size = input.string("Normal", "Dashboard Size", options=["Tiny", "Small", "Normal", "Large"], group=grp_dash)
get_table_size() =>
switch table_size
"Tiny" => size.tiny
"Small" => size.small
"Large" => size.large
=> size.normal
get_shape() =>
switch shapeType
"Square" => shape.square
"Diamond" => shape.diamond
"Cross" => shape.cross
"X" => shape.xcross
=> shape.circle
get_shape1() =>
switch shapeType
"Square" => "■"
"Diamond" => "◆"
"Cross" => "+"
"X" => "X"
=> "●"
float middle = ta.ema(ta.sma(close, length), length)
atr = ta.atr(100)
upper = ta.highest(high+atr, lookback)
lower = ta.lowest(low-atr, lookback)
rangeWidth = math.max(upper - lower, 0.00001)
step = rangeWidth / 26
Tcol = close > middle+atr ? colorUp : close < middle-atr ? colorDn : color.new(color.black, 100)
Tcol1 = close > middle+atr ? color.new(colorUp, 50) : close < middle-atr ? color.new(colorDn, 50) : color.new(color.black, 50)
float[] volArray = array.new_float(26, 0.0)
get_vol_at_level(idx) =>
level = lower + (step * idx)
tolerance = step /2
float count = 0.0
for j = 0 to lookback
if math.abs(hl2[j] - level) <= tolerance
count += volume[j]
count
for i = 0 to 25
array.set(volArray, i, get_vol_at_level(i))
pocIndex = array.indexof(volArray, array.max(volArray))
get_intensity(idx) =>
float count = array.get(volArray, idx)
float maxVol = array.max(volArray)
float rawTrans = (count / maxVol)
isPOC = (idx == pocIndex) and showPOC
col = isPOC ? pocColor : color.from_gradient(rawTrans, minVolPercent, 1.2, na, close > (lower + step * idx) ? colorUp : colorDn)
col
if barstate.islast
var labels = array.new<label>()
for l in labels
l.delete()
for i = 0 to 25
dist = int(array.get(volArray, i)/ volArray.max() * 20)
level = lower + (step * i)
isPOC = (i == pocIndex) and showPOC
col = isPOC ? pocColor : color.from_gradient(array.get(volArray, i)/ volArray.max(), minVolPercent, 1, na, close > level ? colorUp : colorDn)
for k = 0 to dist
labels.push(label.new(bar_index+k+1, level, get_shape1(), style = label.style_label_center, color = color(na), textcolor = col))
is_active(idx) =>
level = lower + (step * idx)
tolerance = step * 2
allow = (math.abs(hl2 - level) <= tolerance
or (showTrend ? math.abs(middle - level) <= tolerance/2 : false)
or math.abs(close - level) <= tolerance
or math.abs(hlc3 - level) <= tolerance
or math.abs(high - level) <= tolerance
or math.abs(low - level) <= tolerance
or math.abs(open - level) <= tolerance)
[not allow, level]
[a1, l1] = is_active(1)
[a2, l2] = is_active(2)
[a3, l3] = is_active(3)
[a4, l4] = is_active(4)
[a5, l5] = is_active(5)
[a6, l6] = is_active(6)
[a7, l7] = is_active(7)
[a8, l8] = is_active(8)
[a9, l9] = is_active(9)
[a10, l10] = is_active(10)
[a11, l11] = is_active(11)
[a12, l12] = is_active(12)
[a13, l13] = is_active(13)
[a14, l14] = is_active(14)
[a15, l15] = is_active(15)
[a16, l16] = is_active(16)
[a17, l17] = is_active(17)
[a18, l18] = is_active(18)
[a19, l19Показано первые 50% кода (символов: 8389)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.