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

Smart Money Toolkit Pro

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

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

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

О программе

«Smart Money Toolkit Pro» — индикатор для TradingView, написанный на Pine Script v6, отображаемый поверх графика цены (overlay). Основное назначение — визуализация рыночной структуры, уровней ликвидности и условий для оповещений.

Индикатор обнаруживает пивоты (pivot high/low) заданной глубины, строит метки структуры (HH, LH, HL, LL) и линии свинг-уровней. По соотношению последних свинг-максимумов и минимумов определяется текущий тренд (бычий или медвежий), который отображается фоновым цветом и информационной таблицей в правом верхнем углу.

Второй модуль реализует BOS (Break of Structure) и CHoCH (Change of Character): при пересечении цены уровней предыдущего свинга рисуются соответствующие линии и метки, а также формируются условия оповещений TradingView.

Третий модуль — ликвидность: определяет активные уровни BSL и SSL, выявляет равные максимумы/минимумы (EQH/EQL) с допуском по ATR и обнаруживает смахивания ликвидности (wick заходит за уровень, но закрытие возвращается выше/ниже). Все элементы управляются пользовательскими настройками.

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

НастройкаОписание
pivotLen Глубина обнаружения пивотов — количество баров слева и справа для ta.pivothigh и ta.pivotlow.
showLabels Отображать ли метки структуры (HH, LH, HL, LL) рядом с пивотами.
showSwings Отображать ли горизонтальные линии свинг-высоких и свинг-нижних уровней.
extendLevels Продлевать ли линии свинг-уровней вправо по графику (extend.right).
showTrendBG Закрашивать ли фон графика цветом текущего тренда: зелёным при бычьем, красным при медвежьем.
bullColor Цвет для бычьих элементов: метки структуры HH/HL, линии свинг-минимумов и фон при бычьем тренде.
bearColor Цвет для медвежьих элементов: метки структуры LH/LL, линии свинг-максимумов и фон при медвежьем тренде.
showBOS Отображать ли линии и метки Break of Structure (BOS) — пробой предыдущего свинг-уровня в направлении тренда.
showCHoCH Отображать ли линии и метки Change of Character (CHoCH) — пробой свинг-уровня против тренда.
showLiquidity Отображать ли активные уровни покупательской (BSL) и продажной (SSL) ликвидности.
showSweeps Отображать ли маркеры и перерисовку линий при смахивании ликвидности (wick заходит за уровень, закрытие возвращается).
showEqualHL Отображать ли линии и метки равных максимумов (EQH) и равных минимумов (EQL).
liquidityExtend Продлевать ли линии уровней ликвидности (BSL, SSL) вправо по графику.
eqToleranceATR Множитель ATR, определяющий допуск для признания двух максимумов или минимумов равными (EQH/EQL).
liqLineWidth Толщина линий уровней ликвидности (BSL, SSL) в пикселях.
maxLiquidityHistory Максимальное количество хранимых исторических линий ликвидности. При превышении старейшие линии удаляются.
bslColor Цвет линий и меток уровней покупательской ликвидности (BSL) и равных максимумов (EQH).
sslColor Цвет линий и меток уровней продажной ликвидности (SSL) и равных минимумов (EQL).
sweepBullColor Цвет маркеров и перерисованных линий при смахивании продажной ликвидности (SSL Sweep).
sweepBearColor Цвет маркеров и перерисованных линий при смахивании покупательской ликвидности (BSL Sweep).
Получить полный код

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

indicator("Smart Money Toolkit Pro", shorttitle="SMT Pro", overlay=true, max_lines_count=500, max_labels_count=500)

pivotLen      = input.int(8, "Pivot Strength", minval=2)
showLabels    = input.bool(true, "Show Structure Labels")
showSwings    = input.bool(true, "Show Swing Levels")
extendLevels  = input.bool(true, "Extend Swing Levels")
showTrendBG   = input.bool(true, "Trend Background")

bullColor = input.color(color.lime, "Bullish Color")
bearColor = input.color(color.red, "Bearish Color")

ph = ta.pivothigh(high, pivotLen, pivotLen)
pl = ta.pivotlow(low, pivotLen, pivotLen)

var float lastHigh = na
var float lastLow = na

var int lastHighBar = na
var int lastLowBar = na

if not na(ph)
    lastHigh := ph
    lastHighBar := bar_index - pivotLen

if not na(pl)
    lastLow := pl
    lastLowBar := bar_index - pivotLen

var float prevHigh = na
var float prevLow = na

string highType = ""
string lowType = ""

if not na(ph)

    highType := na(prevHigh) ? "H" : ph > prevHigh ? "HH" : "LH"
    prevHigh := ph

if not na(pl)

    lowType := na(prevLow) ? "L" : pl > prevLow ? "HL" : "LL"
    prevLow := pl

if showLabels

    if not na(ph)

        label.new(
             lastHighBar,
             lastHigh,
             highType,
             style=label.style_label_down,
             color=highType=="HH"?bullColor:bearColor,
             textcolor=color.white)

    if not na(pl)

        label.new(
             lastLowBar,
             lastLow,
             lowType,
             style=label.style_label_up,
             color=lowType=="HL"?bullColor:bearColor,
             textcolor=color.white)

var line highLine = na
var line lowLine = na

if showSwings

    if not na(ph)

        line.delete(highLine)

        highLine := line.new(
             lastHighBar,
             lastHigh,
             bar_index,
             lastHigh,
             extend=extendLevels?extend.right:extend.none,
             color=bearColor,
             width=2)

    if not na(pl)

        line.delete(lowLine)

        lowLine := line.new(
             lastLowBar,
             lastLow,
             bar_index,
             lastLow,
             extend=extendLevels?extend.right:extend.none,
             color=bullColor,
             width=2)

bool bullish = false

if not na(lastHighBar) and not na(lastLowBar)
    bullish := lastLowBar > lastHighBar

bgcolor(showTrendBG ? (bullish ? color.new(bullColor,92) : color.new(bearColor,92)) : na)

var table dash = table.new(position.top_right,2,3)

if barstate.islast

    table.cell(dash,0,0,"Trend")
    table.cell(dash,1,0,bullish?"Bullish":"Bearish")

    table.cell(dash,0,1,"Last High")
    table.cell(dash,1,1,str.tostring(lastHigh,format.mintick))

    table.cell(dash,0,2,"Last Low")
    table.cell(dash,1,2,str.tostring(lastLow,format.mintick))

showBOS = input.bool(true, "Show BOS")
showCHoCH = input.bool(true, "Show CHoCH")

var bool trendBull = bullish

bosBull = false
bosBear = false
chochBull = false
chochBear = false

if not na(lastHigh)
    bosBull := ta.crossover(close, lastHigh) and trendBull

if not na(lastLow)
    bosBear := ta.crossunder(close, lastLow) and not trendBull

if not na(lastHigh)
    chochBull := ta.crossover(close, lastHigh) and not trendBull

if not na(lastLow)
    chochBear := ta.crossunder(close, lastLow) and trendBull

if chochBull
    trendBull := true

if chochBear
    trendBull := false

var line bosLine = na

if bosBull and showBOS
    line.delete(bosLine)
    bosLine := line.new(
         lastHighBar,
         lastHigh,
         bar_index,
         lastHigh,
         color=color.lime,
         width=2)

if bosBear and showBOS
    line.delete(bosLine)
    bosLine := line.new(
         lastLowBar,
         lastLow,
         bar_index,
         lastLow,
         color=color.red,
         width=2)

if chochBull and showCHoCH
    line.new(
         lastHighBar,
         lastHigh,
         bar_index,
         lastHigh,
         color=color.aqua,
         style=line.style_dashed,
         width=2)

if chochBear and showCHoCH
    line.new(
         lastLowBar,
         lastLow,
         bar_index,
         lastLow,
         color=color.orange,
         style=line.style_dashed,
         width=2)

if bosBull and showBOS
    label.new(
         bar_index,
         high,
         "BOS",
         style=label.style_label_down,
         color=color.lime,
         textcolor=color.black)

if bosBear and showBOS
    label.new(
         bar_index,
         low,
         "BOS",
         style=label.style_label_up,
         color=color.red,
         textcolor=color.white)

if chochBull and showCHoCH
    label.new(
         bar_index,
         high,
         "CHoCH",
         style=label.style_label_down,
         color=color.aqua,
         textcolor=color.black)

if chochBear and showCHoCH
    label.new(
         bar_index,
         low,
         "CHoCH",
         style=label.style_label_up,
         color=color.orange,
         textcolor=color.black)

alertcondition(bosBull, "Bullish BOS", "Bullish Break of Structure")

alertcondition(bosBear, "Bearish BOS", "Bearish Break of Structure")

alertcondition(chochBull, "Bullish CHoCH", "Bullish Change of Character")

alertcondition(chochBear, "Bearish CHoCH", "Bearish Change of Character")
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)

groupLiquidity = "Liquidity Engine"

showLiquidity = input.bool(true, "Show Liquidity Levels", group=groupLiquidity)
showSweeps    = input.bool(true, "Show Liquidity Sweeps", group=groupLiquidity)
showEqualHL   = input.bool(true, "Show Equal High / Low", group=groupLiquidity)

liquidityExtend = input.bool(true, "Extend Liquidity Levels", group=groupLiquidity)

eqToleranceATR = input.float(
     0.10,
     "Equal High/Low ATR Tolerance",
     minval=0.01,
     maxval=1.00,
     step=0.01,
     group=groupLiquidity)

liqLineWidth = input.int(
     1,
     "Liquidity Line Width",
     minval=1,
     maxval=4,
     group=groupLiquidity)

maxLiquidityHistory = input.int(
     20,
     "Maximum Historical Liquidity Levels",
     minval=2,
     maxval=100,
     group=groupLiquidity)

bslColor = input.color(
     color.fuchsia,
     "Buy-Side Liquidity Color",
     group=groupLiquidity)

sslColor = input.color(
     color.aqua,
     "Sell-Side Liquidity Color",
     group=groupLiquidity)

sweepBullColor = input.color(
     color.lime,
     "Bullish Sweep Color",
     group=groupLiquidity)

sweepBearColor = input.color(
     color.red,
     "Bearish Sweep Color",
     group=groupLiquidity)

liqATR = ta.atr(14)

equalTolerance = liqATR * eqToleranceATR

var float liquidityPreviousHigh = na
var float liquidityPreviousLow = na

var int liquidityPreviousHighBar = na
var int liquidityPreviousLowBar = na

var float activeBSL = na
var float activeSSL = na

var int activeBSLBar = na
var int activeSSLBar = na

var bool bslAvailable = false
var bool sslAvailable = false

var line activeBSLLine = na
var line activeSSLLine = na

var array<line> liquidityLines = array.new<line>()

storeLiquidityLine(line newLine) =>

    array.push(liquidityLines, newLine)

    if array.size(liquidityLines) > maxLiquidityHist

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

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

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

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

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

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

Стоимость полного кода
989,50₽ ≈ $12.09