Liquidity Hunter Pro SMC Edition
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator liquidity hunter pro smc edition for tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это индикатор для TradingView, разработанный на Pine Script v6, который предназначен для анализа рыночной структуры (SMC) и поиска потенциальных точек входа на основе концепций ликвидности. Индикатор визуализирует различные элементы, такие как смены структуры (BOS), сборы ликвидности (Liquidity Sweeps), а также ключевые паттерны, включая Order Blocks (OB) и Fair Value Gaps (FVG).
Инструмент использует расчеты на основе пивотов (swing high/low) и среднего истинного диапазона (ATR) для определения условий сбора ликвидности. При обнаружении определенных сигналов, индикатор рассчитывает и отображает уровни входа, стоп-лосса и три целевых уровня прибыли с использованием заданных соотношений Риск:Вознаграждение (RR).
Пользователь может настраивать отображение различных элементов — от зон Order Blocks и FVG до индикаторов сборов ликвидности и самого дашборда. Индикатор также генерирует условия для оповещений при возникновении значимых событий на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| swingLen | Длина для определения пиковых точек (Swing High/Low). |
| confirmBars | Максимальное количество баров после сбора ликвидности для подтверждения сигнала. |
| atrLen | Период для расчета ATR (Среднего истинного диапазона). |
| minBodyATR | Минимальный размер тела свечи в ATR для признания свечи как потенциального разворота. |
| rr1 | Соотношение Риск:Вознаграждение для первой цели прибыли (TP1). |
| rr2 | Соотношение Риск:Вознаграждение для второй цели прибыли (TP2). |
| rr3 | Соотношение Риск:Вознаграждение для третьей цели прибыли (TP3). |
| showLevels | Отображать ли уровни входа, стоп-лосса и целей прибыли. |
| showSweeps | Отображать ли события сбора ликвидности (Liquidity Sweeps). |
| showBOS | Отображать ли смену структуры (Break of Structure - BOS). |
| showOB | Отображать ли зоны Order Blocks (OB). |
| showFVG | Отображать ли Несбалансированные зоны (Fair Value Gaps - FVG). |
| showDash | Отображать ли информационную панель (Dashboard). |
| obLookback | Количество баров, которое используется для поиска Order Block. |
| extendBars | Количество баров, на которое будут расширены зоны (OB, FVG) вправо. |
| rightBars | Расстояние в барах, на которое будут вынесены метки уровней вправо от точки входа. |
Поиск по коду файла
indicator("Liquidity Hunter PRO SMC Edition", overlay=true, max_labels_count=200, max_lines_count=100, max_boxes_count=30)
swingLen = input.int(5, "Swing Length", minval=2)
confirmBars = input.int(10, "Max Bars After Sweep", minval=1)
atrLen = input.int(14, "ATR Length", minval=1)
minBodyATR = input.float(0.15, "Min Reversal Body (ATR)", minval=0, step=0.05)
rr1 = input.float(1.0, "TP1 Risk:Reward", minval=0.5, step=0.5)
rr2 = input.float(2.0, "TP2 Risk:Reward", minval=1.0, step=0.5)
rr3 = input.float(3.0, "TP3 Risk:Reward", minval=1.5, step=0.5)
showLevels = input.bool(true, "Show Entry / SL / TP")
showSweeps = input.bool(true, "Show Liquidity Sweeps")
showBOS = input.bool(true, "Show BOS")
showOB = input.bool(true, "Show Order Blocks")
showFVG = input.bool(true, "Show Fair Value Gaps")
showDash = input.bool(true, "Show Dashboard")
obLookback = input.int(15, "Order Block Search Bars", minval=2, maxval=50)
extendBars = input.int(30, "Zone Extension Bars", minval=5, maxval=200)
rightBars = input.int(15, "Target Label Distance", minval=2, maxval=100)
ph = ta.pivothigh(high, swingLen, swingLen)
pl = ta.pivotlow(low, swingLen, swingLen)
var float swingHigh = na
var float swingLow = na
if not na(ph)
swingHigh := ph
if not na(pl)
swingLow := pl
atr = ta.atr(atrLen)
body = math.abs(close - open)
bullCandle = close > open and body >= atr * minBodyATR
bearCandle = close < open and body >= atr * minBodyATR
sweepLow = barstate.isconfirmed and not na(swingLow) and low < swingLow and close > swingLow
sweepHigh = barstate.isconfirmed and not na(swingHigh) and high > swingHigh and close < swingHigh
bullBOS = barstate.isconfirmed and not na(swingHigh) and ta.crossover(close, swingHigh)
bearBOS = barstate.isconfirmed and not na(swingLow) and ta.crossunder(close, swingLow)
plotshape(showBOS and bullBOS, title="Bullish BOS", text="BOS ↑", style=shape.labelup, location=location.belowbar, color=color.teal, textcolor=color.white, size=size.tiny)
plotshape(showBOS and bearBOS, title="Bearish BOS", text="BOS ↓", style=shape.labeldown, location=location.abovebar, color=color.maroon, textcolor=color.white, size=size.tiny)
plotshape(showSweeps and sweepLow, title="Low Liquidity Sweep", style=shape.circle, location=location.belowbar, color=color.aqua, size=size.tiny)
plotshape(showSweeps and sweepHigh, title="High Liquidity Sweep", style=shape.circle, location=location.abovebar, color=color.orange, size=size.tiny)
var box bullOB = na
var box bearOB = na
if showOB and bullBOS
int bullOffset = na
float bullTop = na
float bullBottom = na
for i = 1 to obLookback
if na(bullOffset) and close[i] < open[i]
bullOffset := i
bullTop := high[i]
bullBottom := low[i]
if not na(bullOffset)
if not na(bullOB)
box.delete(bullOB)
bullOB := box.new(left=bar_index - bullOffset, top=bullTop, right=bar_index + extendBars, bottom=bullBottom, xloc=xloc.bar_index, bgcolor=color.new(color.green, 85), border_color=color.lime, text="Bullish OB", text_color=color.lime, text_size=size.tiny)
if showOB and bearBOS
int bearOffset = na
float bearTop = na
float bearBottom = na
for i = 1 to obLookback
if na(bearOffset) and close[i] > open[i]
bearOffset := i
bearTop := high[i]
bearBottom := low[i]
if not na(bearOffset)
if not na(bearOB)
box.delete(bearOB)
bearOB := box.new(left=bar_index - bearOffset, top=bearTop, right=bar_index + extendBars, bottom=bearBottom, xloc=xloc.bar_index, bgcolor=color.new(color.red, 85), border_color=color.red, text="Bearish OB", text_color=color.red, text_size=size.tiny)
var box bullFVG = na
var box bearFVG = na
bullGap = barstate.isconfirmed and bar_index >= 2 and low > high[2]
bearGap = barstate.isconfirmed and bar_index >= 2 and high < low[2]
if showFVG and bullGap
if not na(bullFVG)
box.delete(bullFVG)
bullFVG := box.new(left=bar_index - 2, top=low, right=bar_index + extendBars, bottom=high[2], xloc=xloc.bar_index, bgcolor=color.new(color.aqua, 86), border_color=color.aqua, text="Bullish FVG", text_color=color.aqua, text_size=size.tiny)
if showFVG and bearGap
if not na(bearFVG)
box.delete(bearFVG)
bearFVG := box.new(left=bar_index - 2, top=low[2], right=bar_index + extendBars, bottom=high, xloc=xloc.bar_index, bgcolor=color.new(color.orange, 86), border_color=color.orange, text="Bearish FVG", text_color=color.orange, text_size=size.tiny)
if barstate.islast
if not na(bullOB)
box.set_right(bullOB, bar_index + extendBars)
if not na(bearOB)
box.set_right(bearOB, bar_index + extendBars)
if not na(bullFVG)
box.set_right(bullFVG, bar_index + extendBars)
if not na(bearFVG)
box.set_right(bearFVG, bar_index + extendBars)
var bool waitBull = false
var bool waitBear = false
var float bullSL = na
var float bearSL = na
var float bullMSS = na
var float bearMSS = na
var int bullBar = na
var int bearBar = na
if sweepLow and not na(swingHigh)
waitBull := true
waitBear := false
bullSL := low
bullMSS := swingHigh
bullBar := bar_index
if sweepHigh and not na(swingLow)
waitBear := true
waitBull := false
bearSL := high
bearMSS := swingLow
bearBar := bar_index
if waitBull and not na(bullBar) and bar_index - bullBar > confirmBars
waitBull := false
if waitBear and not na(bearBar) and bar_index - bearBar > confirmBars
waitBear := false
buySignal = barstate.isconfirmed and waitBull and not na(bullMSS) and close > bullMSS and bullCandle and close > bullSL
sellSignal = barstate.isconfiПоказано первые 50% кода (символов: 9467)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.