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

Smart Money Absorption Radar

indicator smart money absorption radar for tradingview.pine
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор «Smart Money Absorption Radar» анализирует всплески объёма, паттерны отката свечей и ликвидностные спреды на графике TradingView для выявления зон поглощения. Он отображает сигналы BUY/SELL, зоны поглощения, маркеры ликвидностных спредов, скользящую среднюю EMA и информационную панель с текущим состоянием объёма и давления покупателей/продавцов. Пользователь может настраивать пороги объёма, коэффициенты отката свечей, фильтры трендов и уровни стоп-лосса и тейк-профита. Индикатор поддерживает условные оповещения TradingView для всплесков объёма, сигналов поглощения и ликвидностных спредов.

Настройки программы

НастройкаОписание
volLength Период скользящей средней для расчёта среднего объёма, с которым сравнивается текущий объём.
volMultiplier Множитель, определяющий порог всплеска объёма: текущий объём должен быть не менее среднего, умноженного на это значение.
wickRatio Минимальное соотношение теневой свечи к общему диапазону для распознавания паттерна отката (отклонения) свечи.
rangeLength Количество баров назад для поиска предыдущих максимумов и минимумов при определении ликвидностных спредов.
useTrendFilter При активации сигналы поглощения фильтруются по положению цены относительно EMA: покупательские сигналы только при цене выше EMA, продавецские — ниже.
emaLength Период расчёта экспоненциальной скользящей средней EMA, используемой в качестве фильтра тренда при активном переключателе фильтра тренда.
useSweepFilter При активации сигнал поглощения требует предварительного подтверждения ликвидностным спредом.
cooldown Количество баров ожидания между последовательными сигналами поглощения, предотвращающий повторные оповещения в коротком промежутке времени.
showZones Включает или скрывает прямоугольные зоны поглощения покупателей и продавцов на графике.
showSweep Включает или скрывает графические маркеры ликвидностных спредов (бычьих и медвежьих) на графике.
showEMA Включает или скрывает отображение экспоненциальной скользящей средней EMA на графике.
showSignals Включает или скрывает графические метки BUY и SELL на графике при подтверждённых сигналах поглощения.
zoneExtension Количество баров вправо, на которые расширяются прямоугольные зоны поглощения после появления сигнала.
showDashboard Включает или скрывает информационную панель в правом верхнем углу графика с отображением состояния объёма, давления и тренда.
showTargets Включает или скрывает автоматические линии входа, стоп-лосса и трёх уровней тейк-профита при появлении сигнала.
targetATR Множитель ATR для расчёта расстояния стоп-лосса от точки входа.
targetRR1 Соотношение риск и доходность для первого уровня тейк-профита.
targetRR2 Соотношение риск и доходность для второго уровня тейк-профита.
targetRR3 Соотношение риск и доходность для третьего уровня тейк-профита.
targetExtension Количество баров вправо, на которые продлеваются линии входа, стоп-лосса и тейк-профита.
Получить полный код

Поиск по коду файла

indicator("Smart Money Absorption Radar", overlay=true, max_labels_count=100, max_boxes_count=20, max_lines_count=30)

groupAbs = "Absorption Engine"
volLength = input.int(20, "Volume Average Length", minval=5, group=groupAbs)
volMultiplier = input.float(1.5, "Volume Spike Multiplier", minval=1.0, step=0.1, group=groupAbs)
wickRatio = input.float(0.40, "Minimum Rejection Wick Ratio", minval=0.1, maxval=0.9, step=0.05, group=groupAbs)
rangeLength = input.int(20, "Liquidity Lookback", minval=5, group=groupAbs)

groupFilter = "Signal Filters"
useTrendFilter = input.bool(false, "Use EMA Trend Filter", group=groupFilter)
emaLength = input.int(200, "EMA Length", minval=20, group=groupFilter)
useSweepFilter = input.bool(false, "Require Liquidity Sweep", group=groupFilter)
cooldown = input.int(8, "Signal Cooldown Bars", minval=0, group=groupFilter)

groupVisual = "Chart Visuals"
showZones = input.bool(true, "Show Absorption Zones", group=groupVisual)
showSweep = input.bool(true, "Show Liquidity Sweeps", group=groupVisual)
showEMA = input.bool(false, "Show EMA", group=groupVisual)
showSignals = input.bool(true, "Show BUY / SELL Signals", group=groupVisual)
zoneExtension = input.int(20, "Zone Extension Bars", minval=1, maxval=200, group=groupVisual)

groupDash = "Radar Dashboard"
showDashboard = input.bool(true, "Show Dashboard", group=groupDash)

atr = ta.atr(14)
ema = ta.ema(close, emaLength)
avgVolume = ta.sma(volume, volLength)

validVolume = not na(volume) and not na(avgVolume) and avgVolume > 0
volumeSpike = validVolume and volume >= avgVolume * volMultiplier

candleRange = math.max(high - low, syminfo.mintick)
body = math.abs(close - open)

upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low

upperWickRatio = upperWick / candleRange
lowerWickRatio = lowerWick / candleRange

closePosition = (close - low) / candleRange

bullRejection = lowerWickRatio >= wickRatio and closePosition >= 0.60
bearRejection = upperWickRatio >= wickRatio and closePosition <= 0.40

plot(showEMA ? ema : na, "Trend EMA", color=color.orange, linewidth=2)

previousLow = ta.lowest(low[1], rangeLength)
previousHigh = ta.highest(high[1], rangeLength)

bullSweep = not na(previousLow) and low < previousLow and close > previousLow
bearSweep = not na(previousHigh) and high > previousHigh and close < previousHigh

plotshape(showSweep and bullSweep and barstate.isconfirmed, title="Bullish Liquidity Sweep", style=shape.triangleup, location=location.belowbar, color=color.aqua, size=size.tiny, text="SW")
plotshape(showSweep and bearSweep and barstate.isconfirmed, title="Bearish Liquidity Sweep", style=shape.triangledown, location=location.abovebar, color=color.orange, size=size.tiny, text="SW")

bullAbsorption = volumeSpike and bullRejection
bearAbsorption = volumeSpike and bearRejection

trendBull = not useTrendFilter or close > ema
trendBear = not useTrendFilter or close < ema

sweepBullValid = not useSweepFilter or bullSweep
sweepBearValid = not useSweepFilter or bearSweep

rawBuy = bullAbsorption and trendBull and sweepBullValid
rawSell = bearAbsorption and trendBear and sweepBearValid

var int lastSignalBar = na

cooldownPassed = na(lastSignalBar) or bar_index - lastSignalBar > cooldown

buySignal = rawBuy and cooldownPassed and barstate.isconfirmed
sellSignal = rawSell and cooldownPassed and barstate.isconfirmed

if buySignal or sellSignal
    lastSignalBar := bar_index

var box bullZone = na
var box bearZone = na

if showZones and buySignal
    if not na(bullZone)
        box.delete(bullZone)
    bullZone := box.new(left=bar_index, top=math.max(open, close), right=bar_index + zoneExtension, bottom=low, border_color=color.new(color.aqua, 15), bgcolor=color.new(color.aqua, 87), text="BUYER ABSORPTION", text_color=color.aqua, text_size=size.tiny)

if showZones and sellSignal
    if not na(bearZone)
        box.delete(bearZone)
    bearZone := box.new(left=bar_index, top=high, right=bar_index + zoneExtension, bottom=math.min(open, close), border_color=color.new(color.red, 15), bgcolor=color.new(color.red, 87), text="SELLER ABSORPTION", text_color=color.red, text_size=size.tiny)
var table wm = table.new(position.bottom_right, 1, 1)
if barstate.isfirst
    table.cell(wm, 0, 0, "Telegram @SimpleForexTools", text_color = color.new(color.gray, 70), text_size = size.large)

plotshape(showSignals and buySignal, title="BUY Absorption", style=shape.labelup, location=location.belowbar, color=color.rgb(0, 150, 120), text="BUY", textcolor=color.white, size=size.small)

plotshape(showSignals and sellSignal, title="SELL Absorption", style=shape.labeldown, location=location.abovebar, color=color.rgb(200, 55, 65), text="SELL", textcolor=color.white, size=size.small)

var table radar = table.new(position.top_right, 2, 7, border_width=1, frame_color=color.new(color.gray, 50))

var string lastEvent = "WAITING"

if buySignal
    lastEvent := "BUYER ABSORPTION"

if sellSignal
    lastEvent := "SELLER ABSORPTION"

volumeStatus = volumeSpike ? "HIGH VOLUME" : "NORMAL"
volumeColor = volumeSpike ? color.new(color.orange, 30) : color.new(color.gray, 65)

pressureStatus = bullAbsorption ? "BUY PRESSURE" : bearAbsorption ? "SELL PRESSURE" : "NEUTRAL"

pressureColor = bullAbsorption ? color.new(color.green, 40) : bearAbsorption ? color.new(color.red, 40) : color.new(color.gray, 65)

trendStatus = close > ema ? "BULLISH" : close < ema ? "BEARISH" : "NEUTRAL"

if barstate.islast and showDashboard
    table.cell(radar, 0, 0, "@simpleforextools", bgcolor=color.rgb(20, 30, 48), text_color=color.white)
    table.cell(radar, 1, 0, "PRO", bgcolor=color.rgb(20, 30, 48), text_color=color.aqua)

    table.cell(radar, 0, 1, "Volume", bgcolor=color.new(color.gray, 80), text_color=color.white)
    table.cell(radar, 1, 1, volumeStatus, bgcolor=v

Показано первые 50% кода (символов: 10061)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 006,10₽ ≈ $12.40