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

Minimal Multi-Strategy Overlay

indicator minimal multi-strategy overlay for tradingview.pine
Вы автор или правообладатель?

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

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

О программе

Minimal Multi-Strategy Overlay — это индикатор-оверлей для TradingView (Pine Script v6), который объединяет несколько инструментов анализа на одном графике. Он отображает уровни CRT/PO3 (диапазон предшествующего свечи более высокого таймфрейма), максимумы и минимумы ночной торговой сессии, уровни предыдущего торгового дня и сессионный VWAP. Все эти уровни рисуются поверх цены и автоматически скрываются на дневных и старших таймфреймах.

Индикатор также обнаруживает Fair Value Gaps (пропуски справедливой стоимости) и их инверсии (IFVG), визуализируя их в виде цветных прямоугольников с возможностью текстовых меток. При инверсии зоны меняет цвет, а при восстановлении цены удаляется. Дополнительно реализована функция SMT Divergence — сравнение пивотов текущего инструмента с пивотами коррелированного символа для выявления расхождений.

Для каждого из механизмов предусмотрены отдельные переключатели видимости, а также настраиваются таймфрейм, часовой пояс, размеры зон и цветовая схема. Индикатор поддерживает оповещения TradingView через alertcondition для ключевых событий: формирование FVG, инверсия FVG, SMT-дивергенция и CRT-реверсия.

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

НастройкаОписание
showCRT Показывать CRT / PO3 Range — Включает отображение уровней CRT/PO3 (диапазон предшествующей свечи более высокого таймфрейма).
showON Показывать Overnight High/Low — Включает отображение максимума и минимума ночной торговой сессии.
showPDHL Показывать Prior Day High/Low — Включает отображение максимума и минимума предыдущего торгового дня.
showVWAP Показывать Session VWAP — Включает отображение сессионного VWAP на графике.
showFVG Показывать Fair Value Gaps — Включает обнаружение и отображение Fair Value Gaps на графике.
showFVGLbl Показывать метки FVG — Включает отображение текстовых меток «FVG» и «IFVG» на соответствующих зонах.
showSMT Показывать SMT Divergence — Включает отображение SMT-дивергенции (сравнение пивотов текущего инструмента и коррелированного символа).
crtTF Таймфрейм CRT / PO3 — Таймфрейм, с которого берётся диапазон предшествующей свечи для уровней CRT/PO3.
onSession Окончание торговой сессии — Временное окно торговой сессии, в рамках которого отслеживаются максимум и минимум ночной сессии.
sessTZ Часовой пояс сессии — Часовой пояс, используемый для определения торговой сессии.
minGapTicks Минимальный размер FVG (тики) — Минимальный размер FVG в тиках. При значении 0 обнаружение FVG отключается.
maxSessions Максимум сессий зоны — Максимальное количество торговых сессий, в течение которых FVG-зона сохраняется на графике.
corrSymbol Коррелированный символ — Торговый инструмент, пивоты которого используются для расчёта SMT-дивергенции.
pivotLen Глубина поиска пивотов — Количество баров с каждой стороны для поиска пивотов при расчёте SMT-дивергенции.
maxPivotAgeBars Максимум баров между пивотами — Максимальное количество баров между пивотами, при котором SMT-дивергенция считается актуальной.
lineWidth Толщина линий — Толщина линий уровней и границ зон в пикселях.
levelColor Цвет уровней — Цвет справочных линий: CRT/PO3, уровней предыдущего дня и сессионного VWAP.
bullColor Бычий цвет — Цвет бычьих отметок (FVG бычьего направления, бычьи SMT-метки).
bearColor Медвежий цвет — Цвет медвежьих отметок (FVG медвежьего направления, медвежьи SMT-метки).
Получить полный код

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

indicator("Minimal Multi-Strategy Overlay", overlay=true, max_boxes_count=200, max_lines_count=200, max_labels_count=200)

showCRT    = input.bool(true,  "CRT / PO3 Range",   group="Levels")
showON     = input.bool(false, "Overnight High/Low", group="Levels")
showPDHL   = input.bool(true,  "Prior Day High/Low", group="Levels")
showVWAP   = input.bool(true,  "Session VWAP",       group="Levels")
showFVG    = input.bool(true,  "Fair Value Gaps",    group="FVG / IFVG")
showFVGLbl = input.bool(true,  "FVG Text Labels",    group="FVG / IFVG")
showSMT    = input.bool(true,  "SMT Divergence",     group="SMT Divergence")

crtTF = input.timeframe("240", "CRT / PO3 Timeframe (prior candle's range)", group="Levels")

onSession = input.session("1800-0930", "Overnight Window", group="Levels")
sessTZ    = input.string("America/New_York", "Session Timezone", group="Levels")

minGapTicks = input.float(0.0, "Min FVG Size (ticks, 0 = off)", minval=0.0, group="FVG / IFVG")
maxSessions = input.int(3, "Max Trading Sessions to Keep a Zone", minval=1, maxval=20, group="FVG / IFVG")

corrSymbol      = input.symbol("CME_MINI:ES1!", "Correlated Symbol", group="SMT Divergence")
pivotLen        = input.int(5,  "Pivot Lookback (bars each side)",   minval=1, maxval=30,  group="SMT Divergence")
maxPivotAgeBars = input.int(20, "Max Bars Between Pivots",           minval=1, maxval=200, group="SMT Divergence")

lineWidth  = input.int(1, "Line Width", minval=1, maxval=3, group="Style")
levelColor = input.color(color.yellow, "Reference Lines (CRT / Prior Day / VWAP)", group="Style")
bullColor  = input.color(color.new(color.black, 0), "Bullish Color", group="Style")
bearColor  = input.color(color.new(#8b2e2e, 0),    "Bearish Color", group="Style")

isIntraday = timeframe.isintraday

var int sessionCounter = 0
newTradingSession = ta.change(time("D")) != 0
if newTradingSession
    sessionCounter += 1

crtHigh = request.security(syminfo.tickerid, crtTF, high[1], lookahead=barmerge.lookahead_off)
crtLow  = request.security(syminfo.tickerid, crtTF, low[1],  lookahead=barmerge.lookahead_off)

plot(isIntraday and showCRT ? crtHigh : na, "CRT High", color=levelColor, linewidth=lineWidth, display=display.none)
plot(isIntraday and showCRT ? crtLow  : na, "CRT Low",  color=levelColor, linewidth=lineWidth, display=display.none)

crtBullish = isIntraday and showCRT and low < crtLow and close > crtLow
crtBearish = isIntraday and showCRT and high > crtHigh and close < crtHigh

if crtBullish
    label.new(bar_index, low, "", style=label.style_circle, color=bullColor, size=size.tiny,
         tooltip="CRT: swept below prior " + crtTF + " low and closed back above it")
if crtBearish
    label.new(bar_index, high, "", style=label.style_circle, color=bearColor, size=size.tiny,
         tooltip="CRT: swept above prior " + crtTF + " high and closed back below it")

var line  onHiLine = na
var line  onLoLine = na
var float onHigh   = na
var float onLow    = na

inON  = isIntraday and not na(time(timeframe.period, onSession, sessTZ))
newON = inON and not inON[1]
onColor = color.new(levelColor, 60)

if showON and newON
    if not na(onHiLine)
        line.delete(onHiLine)
        line.delete(onLoLine)
    onHigh   := high
    onLow    := low
    onHiLine := line.new(bar_index, onHigh, bar_index, onHigh, extend=extend.right, color=onColor, width=lineWidth, style=line.style_dashed)
    onLoLine := line.new(bar_index, onLow,  bar_index, onLow,  extend=extend.right, color=onColor, width=lineWidth, style=line.style_dashed)
else if showON and inON
    onHigh := math.max(onHigh, high)
    onLow  := math.min(onLow, low)
    line.set_y1(onHiLine, onHigh)
    line.set_y2(onHiLine, onHigh)
    line.set_y1(onLoLine, onLow)
    line.set_y2(onLoLine, onLow)

pdHigh = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_off)
pdLow  = request.security(syminfo.tickerid, "1D", low[1],  lookahead=barmerge.lookahead_off)
pdColor = color.new(levelColor, 40)

plot(isIntraday and showPDHL ? pdHigh : na, "Prior Day High", color=pdColor, linewidth=lineWidth, style=plot.style_linebr, display=display.none)
plot(isIntraday and showPDHL ? pdLow  : na, "Prior Day Low",  color=pdColor, linewidth=lineWidth, style=plot.style_linebr, display=display.none)

vwapVal = isIntraday and showVWAP ? ta.vwap(hlc3) : na
plot(vwapVal, "Session VWAP", color=color.new(levelColor, 20), linewidth=lineWidth, display=display.none)

type FVG
    box    zoneBox
    label  zoneLabel
    string kind
    bool   inverted
    float  top
    float  bottom
    int    startSession

var FVG[] fvgs = array.new<FVG>()

tickSize = syminfo.mintick
minGap   = minGapTicks * tickSize

bullGap = low > high[2]
bearGap = high < low[2]

if showFVG and bullGap and (low - high[2]) >= minGap
    b = box.new(bar_index[2], low, bar_index, high[2], border_color=bullColor, bgcolor=color.new(bullColor, 85), extend=extend.none)
    label lbl = na
    if showFVGLbl
        lbl := label.new(bar_index, (low + high[2]) / 2, "FVG", style=label.style_none, textcolor=bullColor, size=size.tiny)
    array.push(fvgs, FVG.new(b, lbl, "bull", false, low, high[2], sessionCounter))

if showFVG and bearGap and (low[2] - high) >= minGap
    b2 = box.new(bar_index[2], low[2], bar_index, high

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

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

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

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

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

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

Стоимость полного кода
849,40₽ ≈ $10.38