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

LIQS and FIBS Scalp System

indicator liqs and fibs scalp system for tradingview.pine

Похожие материалы по тегам

!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 2 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 2 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedingvonepointoneone.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.10 optimized.mq4MQL4 / MetaTrader 4 · 2 общих теговsureforexhedging 1.09 a (2).mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Индикатор «LIQS and FIBS Scalp System» — это инструмент анализа и отображения на графике TradingView, написанный на Pine Script v6. Он ориентирован на выявление торговых установок для скальпинга и интрадей-торговли, комбинируя несколько модулей технического анализа.

Основные функции индикатора включают отображение VWAP, определение направления тренда на старшем таймфрейме через структурные пробои (пивоты), отслеживание ликвидностных захватов (sweeps) старших максимумов и минимумов, а также построение уровней Фибоначчи с зонами входа, целями и стоп-лоссом. Также реализована логика BOS/CHoCH (Break of Structure / Change of Character) с визуализацией кандидатов и подтверждённых пробоев.

Индикатор поддерживает пользовательские настройки цветов, стилей и количества отображаемых уровней. Встроенные вызовы alert() позволяют получать уведомления о входе цены в зоны и о событиях BOS/CHoCH. Индикатор отображается поверх графика (overlay = true).

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

НастройкаОписание
showVwap Отображать ли линию VWAP на графике.
htf Старший таймфрейм, с которого берётся данные для определения общего направления тренда.
useBiasFilter Включает фильтр направления тренда: недействующие контр-трендовые установки отображаются серым цветом.
grayCol Цвет заливки для недействующих (контр-трендовых) установок при включённом фильтре.
maxLevels Максимальное количество уровней ликвидностных захватов старшего таймфрейма, отображаемых одновременно.
bullColor Цвет линий и отметок для бычьих захватов (пробой старших минимумов).
bearColor Цвет линий и отметок для медвежьих захватов (пробой старших максимумов).
showLastFib Количество последних Фибоначчи-установок, отображаемых на графике.
showReactBox Отображать ли зону входа 0.318–0.618 в каждой Фибоначчи-установке.
reactBoxBullCol Цвет заливки бычьей зоны входа (0.318–0.618).
reactBoxBearCol Цвет заливки медвежьей зоны входа (0.318–0.618).
targetBoxCol Цвет заливки целевых зон (1.47–1.55 и 2.56–2.68).
slBoxCol Цвет заливки зоны стоп-лосса (-0.23 до -0.31).
len Длина фрактала для определения пивотов BOS/CHoCH (нечётное число).
barsToRight Количество баров вправо для расширения линий кандидатов BOS/CHoCH за пределы текущего бара.
requireBody Если включено, пробой BOS/CHoCH считается подтверждённым только при закрытии свечи за уровнем; иначе — при пробое максимумом/минимумом.
maxKeep Количество последних подтверждённых пробоев BOS/CHoCH, отображаемых на графике.
candCol Цвет линий-кандидатов BOS/CHoCH до подтверждения пробоя.
candW Толщина линий-кандидатов BOS/CHoCH.
candStyleS Стиль линий-кандидатов BOS/CHoCH (Solid, Dashed или Dotted).
showCandText Отображать ли текстовые метки «BOS ↑» / «BOS ↓» у кандидатов.
brkUpCol Цвет линий и меток для подтверждённых восходящих BOS/CHoCH.
brkDnCol Цвет линий и меток для подтверждённых нисходящих BOS/CHoCH.
brkW Толщина линий для подтверждённых пробоев BOS/CHoCH.
brkStyleS Стиль линий для подтверждённых пробоев BOS/CHoCH (Solid, Dashed или Dotted).
Получить полный код

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

indicator("LIQS and FIBS Scalp System", overlay = true, max_lines_count = 500, max_boxes_count = 500, max_labels_count = 500)

var table wmTable = table.new(position.bottom_right, 1, 1)
if barstate.isfirst
    table.cell(wmTable, 0, 0, "Telegram @SimpleForexTools", text_color = color.new(color.gray, 70), text_size = size.huge)

showVwap = input.bool(true, "Show VWAP", group="Extra Features")
vwapVal = ta.vwap
plot(showVwap ? vwapVal : na, color=color.blue, title="VWAP")

grpHtf = "Higher Timeframe Settings"
htf = input.timeframe("720", "Higher Timeframe (HTF)", group=grpHtf)
useBiasFilter = input.bool(true, "Use Bias Filter (Gray out invalid setups)", group=grpHtf)
grayCol = input.color(color.new(color.gray, 80), "Invalid Setup Box Color", group=grpHtf)

f_htf_bias() =>
    pLength = 5 // Internal pivot length for HTF structure
    ph = ta.pivothigh(high, pLength, pLength)
    pl = ta.pivotlow(low, pLength, pLength)

    var float lastPh = na
    var float lastPl = na
    var int trend = 0 

    if not na(ph)
        lastPh := ph
    if not na(pl)
        lastPl := pl

    if not na(lastPh) and close > lastPh
        trend := 1
        lastPh := na // reset after break
    if not na(lastPl) and close < lastPl
        trend := -1
        lastPl := na // reset after break

    trend

htfBiasDir = request.security(syminfo.tickerid, htf, f_htf_bias())
isHtfBullish = htfBiasDir == 1
isHtfBearish = htfBiasDir == -1

grpSweeps = "HTF Sweeps & Reversals"
maxLevels = input.int(3, "Max Sweep Levels (n)", minval = 1, group=grpSweeps)

bullColor = input.color(#089981, "Bullish Sweep Color (Low)", group=grpSweeps)
bearColor = input.color(#f23645, "Bearish Sweep Color (High)", group=grpSweeps)

float rsiVal = ta.rsi(close, 14)
float momVal = ta.mom(close, 10)
[diPlus, diMinus, adx] = ta.dmi(14, 14)
float atr = ta.atr(14)

type FiboSetup
    line[] lines
    label[] labels
    box[] boxes
    float bTop
    float bBot
    int dir // 1 for bull, -1 for bear
    bool isValid
    box bT3
    box bT4
    box bT5
    box bT6
    float t2Price
    float t4Price
    bool t2Hit
    bool t4Hit
    color tgCol

type Level
    float price
    line ln
    line extLn
    bool swept
    bool reversed
    box sweepBox
    label[] extraLabels
    line[] extraLines
    int lastDottedTouchBar

var bullLevels = array.new<Level>()
var bearLevels = array.new<Level>()

var float currentHtfHigh = na
var int currentHtfHighBar = na
var float currentHtfLow = na
var int currentHtfLowBar = na

bool newHtfBar = ta.change(time(htf)) != 0

if newHtfBar
    if not na(currentHtfHigh)
        line lBear = line.new(currentHtfHighBar, currentHtfHigh, bar_index, currentHtfHigh, color = bearColor, style = line.style_solid, width = 2)
        array.unshift(bearLevels, Level.new(currentHtfHigh, lBear, na, false, false, na, array.new_label(), array.new_line(), 0))
        while array.size(bearLevels) > maxLevels
            Level removed = array.pop(bearLevels)
            line.delete(removed.ln)
            line.delete(removed.extLn)
            box.delete(removed.sweepBox)
            for lb in removed.extraLabels
                label.delete(lb)
            for extLine in removed.extraLines
                line.delete(extLine)

    if not na(currentHtfLow)
        line lBull = line.new(currentHtfLowBar, currentHtfLow, bar_index, currentHtfLow, color = bullColor, style = line.style_solid, width = 2)
        array.unshift(bullLevels, Level.new(currentHtfLow, lBull, na, false, false, na, array.new_label(), array.new_line(), 0))
        while array.size(bullLevels) > maxLevels
            Level removed = array.pop(bullLevels)
            line.delete(removed.ln)
            line.delete(removed.extLn)
            box.delete(removed.sweepBox)
            for lb in removed.extraLabels
                label.delete(lb)
            for extLine in removed.extraLines
                line.delete(extLine)

    currentHtfHigh := high
    currentHtfHighBar := bar_index
    currentHtfLow := low
    currentHtfLowBar := bar_index
else
    if high > currentHtfHigh or na(currentHtfHigh)
        currentHtfHigh := high
        currentHtfHighBar := bar_index
    if low < currentHtfLow or na(currentHtfLow)
        currentHtfLow := low
        currentHtfLowBar := bar_index

isBearishPinbar() =>
    body = math.abs(close - open)
    upperWick = high - math.max(close, open)
    upperWick > body * 1.5 and upperWick > atr * 0.2

isBullishPinbar() =>
    body = math.abs(close - open)
    lowerWick = math.min(close, open) - low
    lowerWick > body * 1.5 and lowerWick > atr * 0.2

formatVal(float v) => str.tostring(v, format.mintick)

if array.size(bearLevels) > 0
    for i = 0 to array.size(bearLevels) - 1
        Level b = array.get(bearLevels, i)
        if not b.swept
            line.set_x2(b.ln, bar_index)
            if high > b.price
                b.swept := true
                line.set_style(b.ln, line.style_dashed)
                b.extLn := line.new(bar_index, b.price, bar_index, b.price, color = bearColor, style = line.style_dotted, width = 2)

                b.sweepBox := box.new(left = bar_index, top = high, right = bar_index + 1, bottom = b.price, border_color = bearColor, border_style = line.style_dashed, border_width = 1, bgcolor = color.new(bearColor, 90))

                if close < b.price
                    b.reversed := true
                    line lRev = line.new(bar_index, high, bar_index, close, color=bearColor, width=2)
                    array.push(b.extraLines, lRev)
                    if isBearishPinbar()
                        label pbLb = label.new(bar_index, high + (atr * 0.2), text="▼", color=#00000000, textcolor=bearColor, style=label.style_label_down, size=size.normal)
                        array.push(b.extraLabels, pbLb)
        else if b.swept
            if not na(b.extLn)
                line.set_x2(b.extLn, bar_index)
            if bar_index > line.get_x1(b.extLn) and high >= b.price and close < b.price
                if b.lastDottedTouchBar != bar_index 
                    b.lastDottedTouchBar := bar_index
                    label dotLb = label.new(bar_index, high + (atr * 0.1), text="●", style=label.style_none, textcolor=bearColor, size=size.tiny)
                    array.push(b.extraLabels, dotLb)
            if not b.reversed
                if close < b.price
                    b.reversed := true
                    line lRev = line.new(bar_index - 1, high[1], bar_index, close, color=bearColor, width=2)
                    array.push(b.extraLines, lRev)
                    if isBearishPinbar()
                        label pbLb = label.new(bar_index, high + (atr * 0.2), text="▼", color=#00000000, textcolor=bearColor, style=label.style_label_down, size=size.normal)
                        array.push(b.extraLabels, pbLb)

if array.size(bullLevels) > 0
    for i = 0 to array.size(bullLevels) - 1
        Level b = array.get(bullLevels, i)
        if not b.swept
            line.set_x2(b.ln, bar_index)
            if low < b.price
                b.swept := true
                line.set_style(b.ln, line.style_dashed)
                b.extLn := line.new(bar_index, b.price, bar_index, b.price, color = bullColor, style = line.style_dotted, width = 2)

                b.sweepBox := box.new(left = bar_index, top = b.price, right = bar_index + 1, bottom = low, border_color = bullColor, border_style = line.style_dashed, border_width = 1, bgcolor = color.new(bullColor, 90))

                if close > b.price
                    b.reversed := true
                    line lRev = line.new(bar_index, low, bar_index, close, color=bullColor, width=2)
                    array.push(b.extraLines, lRev)
                    if isBullishPinbar()
                        label pbLb = label.new(bar_index, low - (atr * 0.2), text="▲", color=#00000000, textcolor=bullColor, style=label.style_label_up, size=size.normal)
                        array.push(b.extraLabels, pbLb)
        else if b.swept
            if not na(b.extLn)
                line.set_x2(b.extLn, bar_index)
            if bar_index > line.get_x1(b.extLn) and low <= b.price and close > b.price
                if b.lastDottedTouchBar != bar_index 
                    b.lastDottedTouchBar := bar_index
                    label dotLb = label.new(bar_index, low - (atr * 0.1), text="●", style=label.style_none, textcolor=bullColor, size=size.tiny)
                    array.push(b.extraLabels, dotLb)
            if not b.reversed
                if close > b.price
                    b.reversed := true
                    line lRev = line.new(bar_index - 1, low[1], bar_index, close, color=bullColor, width=2)
                    array.push(b.extraLines, lRev)
                    if isBullishPinbar()
                        label pbLb = label.new(bar_index, low - (atr * 0.2), text="▲", color=#00000000, textcolor=bullColor, style=label.style_label_up, size=size.normal)
                        array.push(b.extraLabels, pbLb)

grpFib = "Fibonacci Setups"
showLastFib = input.int(1, "Show Last N Fibo Setups", minval=1, maxval=10, group=grpFib)
showReactBox = input.bool(true, "Show 0.318-0.618 Reaction Box", group=grpFib)
reactBoxBullCol = input.color(color.new(color.rgb(8,153,129), 80), "Bullish Box Color", group=grpFib)
reactBoxBearCol = input.color(color.new(color.red, 80), "Bearish Box Color", group=grpFib)

targetBoxCol = input.color(color.new(color.blue, 85), "Target Box Color (1.47-1.55 & 2.56-2.68)", group=grpFib)
slBoxCol = input.color(color.new(color.red, 85), "Stop Loss Box Color (-0.23 to -0.31)", group=grpFib)

var float[] fibLevels = array.from(0.0, 1.0) 

var FiboSetup[] fibSetups = array.new<FiboSetup>()

f_drawFib(float priceA, float priceB, int startBar) =>
    float diff = priceB - priceA
    float p318 = priceA + diff * 0.318
    float p618 = priceA + diff * 0.618
    float bTop = math.max(p318, p618)
    float bBot = math.min(p318, p618)

    int dir = diff > 0 ? 1 : -1

    bool isValid = true
    if useBiasFilter
        if dir == 1
            if (not isHtfBullish) or (close < vwapVal)
                isValid := false
        else
            if (not isHtfBearish) or (close > vwapVal)
                isValid := false

    FiboSetup newSetup = FiboSetup.new(array.new_line(), array.new_label(), array.new_box(), bTop, bBot, dir, isValid, na, na, na, na, 0.0, 0.0, false, false, na)

    if showReactBox
        color bCol = dir > 0 ? reactBoxBullCol : reactBoxBearCol
        if not isValid
            bCol := grayCol

        string bTxt = dir > 0 ? "Bullish Entry Zone\n" + str.tostring(bTop, format.mintick) + " - " + str.tostring(bBot, format.mintick) : "Sell Entry Zone\n" + str.tostring(bTop, format.mintick) + " - " + str.tostring(bBot, format.mintick)
        if not isValid
            bTxt := "Counter-Trend Zone\n(Lower Probability)"

        box b = box.new(startBar, bTop, bar_index, bBot, border_color = na, bgcolor = bCol, text = bTxt, text_color = color.white, text_halign = text.align_right, text_valign = text.align_center, text_size = size.small)
        array.push(newSetup.boxes, b)

    float pSl1 = priceA + diff * -0.23
    float pSl2 = priceA + diff * -0.31
    color slColToUse = isValid ? slBoxCol : grayCol
    string slTxt = "Stop Loss\n" + str.tostring(math.max(pSl1, pSl2), format.mintick) + " - " + str.tostring(math.min(pSl1, pSl2), format.mintick)
    box bSl = box.new(startBar, math.max(pSl1, pSl2), bar_index, math.min(pSl1, pSl2), border_color = na, bgcolor = slColToUse, text = slTxt, text_color = color.white, text_halign = text.align_right, text_valign = text.align_center, text_size = size.small)
    array.push(newSetup.boxes, bSl)

    float p147 = priceA + diff * 1.47
    float p155 = priceA + diff * 1.55
    color tgColToUse = isValid ? targetBoxCol : grayCol
    newSetup.tgCol := tgColToUse
    string t1Txt = "Target 1\n" + str.tostring(math.max(p147, p155), format.mintick) + " - " + str.tostring(math.min(p147, p155), format.mintick)
    box bT1 = box.new(startBar, math.max(p147, p155), bar_index, math.min(p147, p155), border_color = na, bgcolor = tgColToUse, text = t1Txt, text_color = color.white, text_halign = text.align_right, text_valign = text.align_center, text_size = size.small)
    array.push(newSetup.boxes, bT1)

    float p256 = priceA + diff * 2.56
    float p268 = priceA + diff * 2.68
    newSetup.t2Price := dir == 1 ? math.min(p256, p268) : math.max(p256, p268) // Price edge to hit T2
    string t2Txt = "Target 2\n" + str.tostring(math.max(p256, p

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

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

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

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

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

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

Стоимость полного кода
1 917,50₽ ≈ $23.44