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

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)