Liquidity Trap Radar PRO
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator liquidity trap radar pro for tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Liquidity Trap Radar PRO — индикатор для TradingView, работающий поверх графика. Он предназначен для обнаружения сценариев ликвидности (liquidity traps), когда цена пробивает предыдущий максимум или минимум, но затем закрывается обратно в диапазон. Индикатор отображает сигналы покупок и продаж, уровни входа, стоп-лосса и тейк-профита, а также показывает структуру рынка.
Индикатор рассчитывает технические показатели средствами Pine Script: скользящую среднюю EMA для определения тренда, ATR для управления рисками и средний объём для подтверждения сигналов. При обнаружении ловушки ликвидности на графике появляются метки, линии уровней и информационная панель.
Поддерживаются условия оповещений TradingView для сигналов о ловушках ликвидности и изменений структуры рынка. Все параметры настраиваются пользователем через панель настроек индикатора. Индикатор не выполняет автоматическую торговлю и не является советником.
Настройки программы
| Настройка | Описание |
|---|---|
| sweepLookback | Количество баров назад для поиска предыдущего максимума и минимума при определении сценариев ликвидности. |
| cooldownBars | Количество баров ожидания между последовательными сигналами для предотвращения повторных оповещений. |
| useTrendFilter | Включает или отключает фильтр тренда на основе EMA для подтверждения сигналов. |
| useVolumeFilter | Включает или отключает фильтр объёма для подтверждения сигналов на основе сравнения текущего объёма со средним. |
| volumeMultiplier | Минимальный множитель среднего объёма, при котором объём считается достаточным для подтверждения сигнала. |
| emaLength | Период расчёта экспоненциальной скользящей средней (EMA), используемой как фильтр тренда. |
| showEMA | Включает или отключает отображение линии экспоненциальной скользящей средней тренда на графике. |
| pivotLength | Период для определения точек разворота свинг-высоких и свинг-низких, используемых при анализе структуры рынка. |
| showStructure | Включает или отключает отображение меток структуры рынка BOS (Break of Structure) и CHoCH (Change of Character). |
| atrLength | Период расчёта индикатора ATR (Average True Range), используемого для определения волатильности и уровней риска. |
| atrBuffer | Дополнительный буфер ATR для расчёта расстояния стоп-лосса от точки входа. |
| tp1RR | Соотношение риск и награда (Risk:Reward) для расчёта первой цели тейк-профита от точки входа. |
| tp2RR | Соотношение риск и награда (Risk:Reward) для расчёта второй цели тейк-профита от точки входа. |
| extendBars | Количество баров вправо, на которых продлеваются линии уровней входа, стоп-лосса и тейк-профита. |
| showSignals | Включает или отключает отображение графических меток сигналов BUY и SELL на графике. |
| showLevels | Включает или отключает отображение линий и подписей точек входа, стоп-лосса и тейк-профита. |
| showDashboard | Включает или отключает отображение информационной панели в правом верхнем углу графика. |
Поиск по коду файла
indicator("Liquidity Trap Radar PRO", overlay=true, max_lines_count=20, max_labels_count=50)
string G_SWEEP = "01. Liquidity Trap Settings"
int sweepLookback = input.int(20, "Liquidity Lookback", minval=5, group=G_SWEEP)
int cooldownBars = input.int(8, "Signal Cooldown", minval=0, group=G_SWEEP)
bool useTrendFilter = input.bool(false, "Use EMA Trend Filter", group=G_SWEEP)
bool useVolumeFilter = input.bool(false, "Use Volume Confirmation", group=G_SWEEP)
float volumeMultiplier = input.float(1.0, "Relative Volume Minimum", minval=0.1, step=0.1, group=G_SWEEP)
string G_TREND = "02. Trend Settings"
int emaLength = input.int(200, "Trend EMA Length", minval=1, group=G_TREND)
bool showEMA = input.bool(true, "Show Trend EMA", group=G_TREND)
string G_STRUCTURE = "03. Market Structure"
int pivotLength = input.int(5, "Swing Pivot Length", minval=2, group=G_STRUCTURE)
bool showStructure = input.bool(true, "Show BOS / CHoCH", group=G_STRUCTURE)
string G_RISK = "04. Risk Management"
int atrLength = input.int(14, "ATR Length", minval=1, group=G_RISK)
float atrBuffer = input.float(0.25, "SL ATR Buffer", minval=0.0, step=0.05, group=G_RISK)
float tp1RR = input.float(1.0, "TP1 Risk:Reward", minval=0.1, step=0.1, group=G_RISK)
float tp2RR = input.float(2.0, "TP2 Risk:Reward", minval=0.1, step=0.1, group=G_RISK)
int extendBars = input.int(20, "Target Line Length", minval=5, maxval=200, group=G_RISK)
string G_VISUAL = "05. Visual Settings"
bool showSignals = input.bool(true, "Show BUY / SELL Signals", group=G_VISUAL)
bool showLevels = input.bool(true, "Show Entry / SL / TP Levels", group=G_VISUAL)
bool showDashboard = input.bool(true, "Show Dashboard", group=G_VISUAL)
float emaTrend = ta.ema(close, emaLength)
float atrValue = ta.atr(atrLength)
float avgVolume = ta.sma(volume, 20)
float previousHigh = ta.highest(high, sweepLookback)[1]
float previousLow = ta.lowest(low, sweepLookback)[1]
bool volumeOK = not useVolumeFilter or (not na(volume) and not na(avgVolume) and volume >= avgVolume * volumeMultiplier)
bool trendBuyOK = not useTrendFilter or close > emaTrend
bool trendSellOK = not useTrendFilter or close < emaTrend
bool upperSweep = not na(previousHigh) and high > previousHigh and close < previousHigh
bool lowerSweep = not na(previousLow) and low < previousLow and close > previousLow
bool bullishRejection = close > open
bool bearishRejection = close < open
var int lastSignalBar = na
bool cooldownOK = na(lastSignalBar) or bar_index - lastSignalBar > cooldownBars
bool buyTrap = barstate.isconfirmed and lowerSweep and bullishRejection and volumeOK and trendBuyOK and cooldownOK
bool sellTrap = barstate.isconfirmed and upperSweep and bearishRejection and volumeOK and trendSellOK and cooldownOK
if buyTrap or sellTrap
lastSignalBar := bar_index
float pivotHigh = ta.pivothigh(high, pivotLength, pivotLength)
float pivotLow = ta.pivotlow(low, pivotLength, pivotLength)
var float lastSwingHigh = na
var float lastSwingLow = na
var int structureTrend = 0
if not na(pivotHigh)
lastSwingHigh := pivotHigh
if not na(pivotLow)
lastSwingLow := pivotLow
bool bullishBreak = barstate.isconfirmed and not na(lastSwingHigh) and ta.crossover(close, lastSwingHigh)
bool bearishBreak = barstate.isconfirmed and not na(lastSwingLow) and ta.crossunder(close, lastSwingLow)
if showStructure and bullishBreak
string structureText = structureTrend == -1 ? "CHoCH" : "BOS"
label.new(bar_index, low, structureText, style=label.style_label_up, color=color.new(color.green, 15), textcolor=color.white, size=size.tiny)
structureTrend := 1
if showStructure and bearishBreak
string structureText = structureTrend == 1 ? "CHoCH" : "BOS"
label.new(bar_index, high, structureText, style=label.style_label_down, color=color.new(color.red, 15), textcolor=color.white, size=size.tiny)
structureTrend := -1
plot(showEMA ? emaTrend : na, title="Trend EMA", color=color.orange, linewidth=2)
plotshape(showSignals and buyTrap, title="Liquidity Trap BUY", style=shape.labelup, location=location.belowbar, color=color.new(color.lime, 0), text="TRAP BUY", textcolor=color.black, size=size.small)
plotshape(showSignals and sellTrap, title="Liquidity Trap SELL", style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), text="TRAP SELL", textcolor=color.white, size=size.small)
var line entryLine = na
var line stopLine = na
var line target1Line = na
var line target2Line = na
var label entryLabel = na
var label stopLabel = na
var label target1Label = na
var label target2Label = na
var float activeEntry = na
var float activeSL = na
var float activeTP1 = na
var float activeTP2 = na
var string activeDirection = "WAITING"
if buyTrap or sellTrap
float newEntry = close
float newSL = buyTrap ? low - atrValue * atrBuffer : high + atrValue * atrBuffer
float riskDistance = math.abs(newEntry - newSL)
bool validRisk = not na(riskDistance) and riskDistance > syminfo.mintick
if validRisk
activeEntry := newEntry
activeSL := newSL
activeTP1 := buyTrap ? newEntry + riskDistance * tp1RR : newEntry - riskDistance * tp1RR
activeTP2 := buyTrap ? newEntry + riskDistance * tp2RR : newEntry - riskDistance * tp2RR
activeDirection := buyTrap ? Показано первые 50% кода (символов: 8868)