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

Confirmed Fib (BOS + Pullback)

confirmed fib (bos + pullback).pine

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Confirmed Fib (BOS + Pullback) — это индикатор для TradingView, который строит подтверждённые уровни Фибоначчи на основе структурного анализа. Индикатор определяет импульсные движения и структурные пивоты, а затем рисует уровни Фибоначчи между якорными точками — верхним и нижним экстремумами.

Индикатор поддерживает режим Fast Draw, при котором уровни строятся сразу после подтверждения импульса и структурного пробоя без ожидания пивота отката. Также доступен классический режим, ожидающий пивота отката перед построением.

Для фильтрации используется смещение по старшему таймфрейму (HTF Bias), а также буфер невалидации на основе ATR. Индикатор отображает зону золотого сечения (0.618–0.786), линию импульса, метки якорей и информационную панель с текущим состоянием структуры.

Настроены уровни Фибоначчи от 0.000 до 1.000, параметры отображения, цветовые темы и условия оповещений для новых построенных уровней и касания зоны золотого сечения.

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

НастройкаОписание
fastDraw Включает режим быстрого построения: уровни Фибоначчи рисуются сразу после подтверждения импульса и структурного пробоя, без ожидания пивота отката.
pivotLen Количество баров слева и справа для определения структурных пивотов (предыдущие свинги и опорные точки для BOS).
impulseR Количество баров справа для подтверждения импульсного экстремума в режиме Fast Draw. Влияет на скорость построения уровня.
pullbackPivotL Количество баров слева и справа для определения пивота отката. Используется только при выключенном режиме Fast Draw.
displacementATR Минимальный размер импульса в единицах ATR(14). Определяет, насколько значительным должен быть импульс для подтверждения структуры.
invalidBufATR Допуск по свече при невалидации структуры (закрытие ниже/выше якорного пивота), в единицах ATR(14).
maxLegAgeBars Максимальный возраст ноги в барах. Если якоря не обновлялись дольше указанного количества баров, структура автоматически сбрасывается.
historyDepth Количество недавних пивотов, сохраняемых в памяти для поиска последовательностей.
useBias Включает или отключает фильтр смещения по старшему таймфрейму для подтверждения направления структуры.
biasPivotL Количество баров слева и справа для определения структурных пивотов на старшем таймфрейме (смещение).
lvl0 Включает или отключает отображение уровня Фибоначчи 0.000.
lvl236 Включает или отключает отображение уровня Фибоначчи 0.236.
lvl382 Включает или отключает отображение уровня Фибоначчи 0.382.
lvl5 Включает или отключает отображение уровня Фибоначчи 0.500.
lvl618 Включает или отключает отображение уровня Фибоначчи 0.618.
lvl786 Включает или отключает отображение уровня Фибоначчи 0.786.
lvl1 Включает или отключает отображение уровня Фибоначчи 1.000.
themeStr Выбор цветовой темы для индикатора (влияет на фон, панели, линии Фибоначчи и другие элементы).
midColor Цвет линии уровня Фибоначчи 0.500.
goldFill Цвет заливки зоны золотого сечения (0.618–0.786).
goldEdge Цвет границы зоны золотого сечения (0.618–0.786).
impulseCol Цвет линии импульса, соединяющей якорные точки.
showImpulse Включает или отключает отображение линии импульса между якорными точками.
extendRight Продлевает линии и зоны Фибоначчи вправо за текущий бар.
showLabels Включает или отключает ценные метки рядом с уровнями Фибоначчи.
showAnchors Включает или отключает отображение маркеров якорных точек (HH, HL, LH, LL).
showInfo Включает или отключает информационную панель с текущим состоянием структуры, смещением и якорными точками.
alertOnNewFib Включает или отключает оповещение при построении нового уровня Фибоначчи.
alertOnZone Включает или отключает оповещение при касании зоны золотого сечения.
Получить полный код

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

indicator("Confirmed Fib (BOS + Pullback)", overlay = true, max_lines_count = 100, max_labels_count = 100, max_boxes_count = 20)

grpS = "Structure"
fastDraw        = input.bool(true, "Fast Draw (skip pullback pivot)", group = grpS, tooltip = "ON: Fib draws as soon as impulse + BOS + displacement confirm. Earliest possible draw, anchors lock once drawn.\nOFF: original behaviour — waits for the pullback pivot before drawing.")
pivotLen        = input.int(8,    "Pivot length (L/R)",        minval = 1, maxval = 30, group = grpS, tooltip = "Bars left & right for STRUCTURAL pivots (prior swing + BOS reference).\n• 15M → 18\n• 1H → 8\n• 4H → 4\n• Daily → 3")
impulseR        = input.int(3,    "Impulse pivot R (Fast Draw)", minval = 1, maxval = 15, group = grpS, tooltip = "Right-side bars before the impulse extreme confirms (Fast Draw only).\nLower = Fib draws sooner relative to the impulse peak.\nWith anchor lock, the first detected impulse is locked even if a higher high prints later.\nSuggested: 3 standard, 2 fast, 5 conservative.")
pullbackPivotL  = input.int(2,    "Pullback pivot length (L/R)", minval = 1, maxval = 15, group = grpS, tooltip = "Only used when Fast Draw is OFF. Bars left & right for the PULLBACK pivot.\nLower = faster draw, weaker pullbacks. Suggested: 2 standard, 1 fast, 5 strict.")
displacementATR = input.float(1.5, "Min displacement (ATR)",   minval = 0.0, maxval = 10.0, step = 0.1, group = grpS, tooltip = "Minimum impulse size in ATR(14) units.\n• 0 → any impulse\n• 1.0 → modest\n• 1.5 → meaningful (default)\n• 2.5+ → major moves only")
invalidBufATR   = input.float(0.25, "Invalidation buffer (ATR)", minval = 0.0, maxval = 2.0, step = 0.05, group = grpS, tooltip = "Wick tolerance on close-below-priorLow (above-priorHigh) invalidation, in ATR(14) units.")
maxLegAgeBars   = input.int(150,  "Max leg age (bars)",        minval = 20, maxval = 2000, group = grpS, tooltip = "Auto-refresh: leg cleared if anchors haven't updated in this many bars.")
historyDepth    = input.int(15,   "Pivots retained",           minval = 6, maxval = 30, group = grpS, tooltip = "Recent pivots kept in memory for sequence lookback.")

grpB = "HTF Bias"
useBias    = input.bool(true, "Use HTF bias filter",  group = grpB, tooltip = "Bias auto-resolves to NEXT standard TF up.")
biasPivotL = input.int(3,     "HTF pivot length (L/R)", minval = 1, maxval = 15, group = grpB)

grpF = "Fib Levels"
lvl0    = input.bool(true, "0.000", group = grpF, inline = "a")
lvl236  = input.bool(true, "0.236", group = grpF, inline = "a")
lvl382  = input.bool(true, "0.382", group = grpF, inline = "b")
lvl5    = input.bool(true, "0.500", group = grpF, inline = "b")
lvl618  = input.bool(true, "0.618", group = grpF, inline = "c")
lvl786  = input.bool(true, "0.786", group = grpF, inline = "c")
lvl1    = input.bool(true, "1.000", group = grpF, inline = "d")

grpV = "Visual"
themeStr    = input.string("SHEPHERDFX Algorithms", "Colour Theme", options = ["SHEPHERDFX Algorithms", "Midnight", "Stealth", "Blood Red", "Matrix", "Arctic", "Neon Orange", "Royal Blue", "Forest", "Monochrome"], group = grpV, tooltip = "Drives dashboard colours and fib line colour.")
midColor    = input.color(color.rgb(160, 160, 170),    "0.500 line color",    group = grpV)
goldFill    = input.color(color.new(#FFD700, 80),      "Golden zone fill",    group = grpV)
goldEdge    = input.color(color.new(#B8860B, 40),      "Golden zone edge",    group = grpV)
impulseCol  = input.color(color.rgb(140, 140, 160),    "Impulse line color",  group = grpV)
showImpulse = input.bool(true,  "Show impulse line", group = grpV)
extendRight = input.bool(true,  "Extend right",   group = grpV)
showLabels  = input.bool(true,  "Price labels",   group = grpV)
showAnchors = input.bool(true,  "Anchor markers", group = grpV)
showInfo    = input.bool(true,  "Info panel",     group = grpV)

grpA = "Alerts"
alertOnNewFib = input.bool(true, "Alert on new fib drawn",      group = grpA)
alertOnZone   = input.bool(true, "Alert on Golden Zone touch",  group = grpA)

color cBg_P     = color.rgb(8,   0,  15)
color cPanel_P  = color.rgb(15,  0,  32)
color cHeader_P = color.rgb(22,  0,  48)
color cBrand_P  = color.rgb(28,  0,  58)
color cFrame_P  = color.rgb(204, 0, 255)
color cGrid_P   = color.rgb(28,  0,  58)
color cFib_P    = color.rgb(156, 39, 176)
color cBull_P   = color.rgb(0,   255, 160)
color cBear_P   = color.rgb(255, 70,  70)

color cBg_M     = color.rgb(5,   5,    8)
color cPanel_M  = color.rgb(10,  10,  14)
color cHeader_M = color.rgb(15,  15,  22)
color cBrand_M  = color.rgb(18,  18,  28)
color cFrame_M  = color.rgb(0,   210, 255)
color cGrid_M   = color.rgb(18,  18,  28)
color cFib_M    = color.rgb(0,   210, 255)
color cBull_M   = color.rgb(0,   255, 160)
color cBear_M   = color.rgb(255, 70,  70)

color cBg_S     = color.rgb(18,  18,  18)
color cPanel_S  = color.rgb(26,  26,  26)
color cHeader_S = color.rgb(34,  34,  34)
color cBrand_S  = color.rgb(40,  40,  40)
color cFrame_S  = color.rgb(200, 160, 40)
color cGrid_S   = color.rgb(40,  40,  40)
color cFib_S    = color.rgb(200, 160, 40)
color cBull_S   = color.rgb(80,  200, 80)
color cBear_S   = color.rgb(220, 60,  60)

color cBg_R     = color.rgb(10,  0,   0)
color cPanel_R  = color.rgb(20,  0,   0)
color cHeader_R = color.rgb(32,  0,   0)
color cBrand_R  = color.rgb(42,  0,   0)
color cFrame_R  = color.rgb(220, 0,   0)
color cGrid_R   = color.rgb(42,  0,   0)
color cFib_R    = color.rgb(220, 0,   0)
color cBull_R   = color.rgb(255, 80,  80)
color cBear_R   = color.rgb(180, 0,   0)

color cBg_X     = color.rgb(0,   5,   0)
color cPanel_X  = color.rgb(0,   10,  0)
color cHeader_X = color.rgb(0,   18,  0)
color cBrand_X  = color.rgb(0,   24,  0)
color cFrame_X  = color.rgb(0,   255, 70)
color cGrid_X   = color.rgb(0,   24,  0)
color cFib_X    = color.rgb(0,   255, 70)
color cBull_X   = color.rgb(0,   255, 70)
color cBear_X   = color.rgb(0,   180, 50)

color cBg_A     = color.rgb(5,   10,  18)
color cPanel_A  = color.rgb(8,   16,  28)
color cHeader_A = color.rgb(12,  22,  40)
color cBrand_A  = color.rgb(15,  28,  50)
color cFrame_A  = color.rgb(140, 210, 255)
color cGrid_A   = color.rgb(15,  28,  50)
color cFib_A    = color.rgb(140, 210, 255)
color cBull_A   = color.rgb(140, 220, 255)
color cBear_A   = color.rgb(80,  160, 220)

color cBg_O     = color.rgb(12,  6,   0)
color cPanel_O  = color.rgb(22,  10,  0)
color cHeader_O = color.rgb(32,  14,  0)
color cBrand_O  = color.rgb(40,  18,  0)
color cFib_O    = color.rgb(255, 120, 0)
color cFrame_O  = color.rgb(255, 120, 0)
color cGrid_O   = color.rgb(40,  18,  0)
color cBull_O   = color.rgb(255, 160, 40)
color cBear_O   = color.rgb(200, 80,  0)

color cBg_B     = color.rgb(4,   6,   18)
color cPanel_B  = color.rgb(6,   10,  30)
color cHeader_B = color.rgb(8,   14,  44)
color cBrand_B  = color.rgb(10,  18,  56)
color cFrame_B  = color.rgb(40,  120, 255)
color cGrid_B   = color.rgb(10,  18,  56)
color cFib_B    = color.rgb(40,  120, 255)
color cBull_B   = color.rgb(100, 180, 255)
color cBear_B   = color.rgb(40,  80,  200)

color cBg_F     = color.rgb(4,   12,  4)
color cPanel_F  = color.rgb(6,   20,  6)
color cHeader_F = color.rgb(8,   28,  8)
color cBrand_F  = color.rgb(10,  36,  10)
color cFrame_F  = color.rgb(100, 255, 50)
color cGrid_F   = color.rgb(10,  36,  10)
color cFib_F    = color.rgb(100, 255, 50)
color cBull_F   = color.rgb(100, 255, 50)
color cBear_F   = color.rgb(50,  180, 20)

color cBg_Mo     = color.rgb(8,   8,   8)
color cPanel_Mo  = color.rgb(16,  16,  16)
color cHeader_Mo = color.rgb(26,  26,  26)
color cBrand_Mo  = color.rgb(34,  34,  34)
color cFrame_Mo  = color.rgb(220, 220, 220)
color cGrid_Mo   = color.rgb(34,  34,  34)
color cFib_Mo    = color.rgb(220, 220, 220)
color cBull_Mo   = color.rgb(200, 200, 200)
color cBear_Mo   = color.rgb(120, 120, 120)

color cBg     = themeStr == "Midnight" ? cBg_M     : themeStr == "Stealth" ? cBg_S     : themeStr == "Blood Red" ? cBg_R     : themeStr == "Matrix" ? cBg_X     : themeStr == "Arctic" ? cBg_A     : themeStr == "Neon Orange" ? cBg_O     : themeStr == "Royal Blue" ? cBg_B     : themeStr == "Forest" ? cBg_F     : themeStr == "Monochrome" ? cBg_Mo     : cBg_P
color cPanel  = themeStr == "Midnight" ? cPanel_M  : themeStr == "Stealth" ? cPanel_S  : themeStr == "Blood Red" ? cPanel_R  : themeStr == "Matrix" ? cPanel_X  : themeStr == "Arctic" ? cPanel_A  : themeStr == "Neon Orange" ? cPanel_O  : themeStr == "Royal Blue" ? cPanel_B  : themeStr == "Forest" ? cPanel_F  : themeStr == "Monochrome" ? cPanel_Mo  : cPanel_P
color cHeader = themeStr == "Midnight" ? cHeader_M : themeStr == "Stealth" ? cHeader_S : themeStr == "Blood Red" ? cHeader_R : themeStr == "Matrix" ? cHeader_X : themeStr == "Arctic" ? cHeader_A : themeStr == "Neon Orange" ? cHeader_O : themeStr == "Royal Blue" ? cHeader_B : themeStr == "Forest" ? cHeader_F : themeStr == "Monochrome" ? cHeader_Mo : cHeader_P
color cBrand  = themeStr == "Midnight" ? cBrand_M  : themeStr == "Stealth" ? cBrand_S  : themeStr == "Blood Red" ? cBrand_R  : themeStr == "Matrix" ? cBrand_X  : themeStr == "Arctic" ? cBrand_A  : themeStr == "Neon Orange" ? cBrand_O  : themeStr == "Royal Blue" ? cBrand_B  : themeStr == "Forest" ? cBrand_F  : themeStr == "Monochrome" ? cBrand_Mo  : cBrand_P
color cFrame  = themeStr == "Midnight" ? cFrame_M  : themeStr == "Stealth" ? cFrame_S  : themeStr == "Blood Red" ? cFrame_R  : themeStr == "Matrix" ? cFrame_X  : themeStr == "Arctic" ? cFrame_A  : themeStr == "Neon Orange" ? cFrame_O  : themeStr == "Royal Blue" ? cFrame_B  : themeStr == "Forest" ? cFrame_F  : themeStr == "Monochrome" ? cFrame_Mo  : cFrame_P
color cGrid   = themeStr == "Midnight" ? cGrid_M   : themeStr == "Stealth" ? cGrid_S   : themeStr == "Blood Red" ? cGrid_R   : themeStr == "Matrix" ? cGrid_X   : themeStr == "Arctic" ? cGrid_A   : themeStr == "Neon Orange" ? cGrid_O   : themeStr == "Royal Blue" ? cGrid_B   : themeStr == "Forest" ? cGrid_F   : themeStr == "Monochrome" ? cGrid_Mo   : cGrid_P
color cFib    = themeStr == "Midnight" ? cFib_M    : themeStr == "Stealth" ? cFib_S    : themeStr == "Blood Red" ? cFib_R    : themeStr == "Matrix" ? cFib_X    : themeStr == "Arctic" ? cFib_A    : themeStr == "Neon Orange" ? cFib_O    : themeStr == "Royal Blue" ? cFib_B    : themeStr == "Forest" ? cFib_F    : themeStr == "Monochrome" ? cFib_Mo    : cFib_P
color cBull   = themeStr == "Midnight" ? cBull_M   : themeStr == "Stealth" ? cBull_S   : themeStr == "Blood Red" ? cBull_R   : themeStr == "Matrix" ? cBull_X   : themeStr == "Arctic" ? cBull_A   : themeStr == "Neon Orange" ? cBull_O   : themeStr == "Royal Blue" ? cBull_B   : themeStr == "Forest" ? cBull_F   : themeStr == "Monochrome" ? cBull_Mo   : cBull_P
color cBear   = themeStr == "Midnight" ? cBear_M   : themeStr == "Stealth" ? cBear_S   : themeStr == "Blood Red" ? cBear_R   : themeStr == "Matrix" ? cBear_X   : themeStr == "Arctic" ? cBear_A   : themeStr == "Neon Orange" ? cBear_O   : themeStr == "Royal Blue" ? cBear_B   : themeStr == "Forest" ? cBear_F   : themeStr == "Monochrome" ? cBear_Mo   : cBear_P

color cText   = color.rgb(235, 235, 235)
color cSub    = color.rgb(150, 150, 160)
color cDim    = color.rgb(110, 110, 125)

color brandBG  = color.new(cBrand,  0)
color headerBG = color.new(cHeader, 0)
color panelBG  = color.new(cPanel,  0)
color frameCl  = color.new(cFrame,  0)
color gridCl   = color.new(cGrid,   0)

int chartSec = timeframe.in_seconds(timeframe.period)
int sec1H    = timeframe.in_seconds("60")
int sec4H    = timeframe.in_seconds("240")
int secD     = timeframe.in_seconds("D")
int secW     = timeframe.in_seconds("W")
int secM     = timeframe.in_seconds("M")

string biasTF        = chartSec < sec1H ? "60" : chartSec < sec4H ? "240" : chartSec < secD ? "D" : chartSec < secW ? "W" : chartSec < secM ? "M" : ""
bool   biasAvailable = biasTF != ""
bool   effBias       = useBias and biasAvailable

string biasTFname = ""
if biasTF == "60"
    biasTFname := "1H"
else if biasTF == "240"
    biasTFname := "4H"
else if biasTF == "D"
    biasTFname := "Daily"
else if biasTF == "W"
    biasTFname := "Weekly"
else if biasTF == "M"
    biasTFname := "Monthly"

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

phFast = ta.pivothigh(high, pivotLen, impulseR)
plFast = ta.pivotlow(low,   pivotLen, impulseR)

phPull = ta.pivothigh(high, pullbackPivotL, pullbackPivotL)
plPull = ta.pivotlow(low,   pullbackPivotL, pullbackPivotL)

var float[] phPrices = array.new_float()
var int[]   phBars   = array.new_int()
var float[] plPrices = array.new_float()
var int[]   plBars   = array.new_int()

var float[] phFastPrices = array.new_float()
var int[]   phFastBars   = array.new_int()
var float[] plFastPrices = array.new_float()
var int[]   plFastBars   = array.new_int()

var float[] phPullPrices = array.new_float()
var int[]   phPullBars   = array.new_int()
var float[] plPullPrices = array.new_float()
var int[]   plPullBars   = array.new_int()

if not na(ph)
    array.push(phPrices, ph)
    array.push(phBars,   bar_index - pivotLen)
    if array.size(phPrices) > historyDepth
        array.shift(phPrices)
        array.shift(phBars)
if not na(pl)
    array.push(plPrices, pl)
    array.push(plBars,   bar_index - pivotLen)
    if array.size(plPrices) > historyDepth
        array.shift(plPrices)
        array.shift(plBars)

if not na(phFast)
    array.push(phFastPrices, phFast)
    array.push(phFastBars,   bar_index - impulseR)
    if array.size(phFastPrices) > historyDepth
        array.shift(phFastPrices)
        array.shift(phFastBars)
if not na(plFast)
    array.push(plFastPrices, plFast)
    array.push(plFastBars,   bar_index - impulseR)
    if array.size(plFastPrices) > historyDepth
        array.shift(plFastPrices)
        array.shift(plFastBars)

if not na(phPull)
    array.push(phPullPrices, phPull)
    array.push(phPullBars,   bar_index - pullbackPivotL)
    if array.size(phPullPrices) > historyDepth
        array.shift(phPullPrices)
        array.shift(phPullBars)
if not na(plPull)
    array.push(plPullPrices, plPull)
    array.push(plPullBars,   bar_index - pullbackPivotL)
    if array.size(plPullPrices) > historyDepth
        array.shift(plPullPrices)
        array.shift(plPullBars)

f_structBias() =>
    pHi = ta.pivothigh(high, biasPivotL, biasPivotL)
    pLo = ta.pivotlow(low,   biasPivotL, biasPivotL)
    lastPH  = ta.valuewhen(not na(pHi), pHi, 0)
    priorPH = ta.valuewhen(not na(pHi), pHi, 1)
    lastPL  = ta.valuewhen(not na(pLo), pLo, 0)
    priorPL = ta.valuewhen(not na(pLo), pLo, 1)
    bull = not na(lastPH) and not na(priorPH) and not na(lastPL) and not na(priorPL) and lastPH > priorPH and lastPL > priorPL
    bear = not na(lastPH) and not na(priorPH) and not na(lastPL) and not na(priorPL) and lastPH < priorPH and lastPL < priorPL
    bull ? 1 : bear ? -1 : 0

string biasTFsafe = biasAvailable ? biasTF : "D"
structB = request.security(syminfo.tickerid, biasTFsafe, f_structBias(), barmerge.gaps_off, barmerge.lookahead_off)

int htfBias = not effBias ? 0 : structB

atr14 = ta.atr(14)

var table myTable = table.new(position.bottom_right, 1, 1, border_width=1, frame_color=color.black, bgcolor=color.white)

table.cell(myTable, 0, 0, "Join Telegram @shepherdfxtradingtools", bgcolor=color.blue, text_color=color.white, text_size=size.normal)

var int    trend       = 0
var float  anchorHi    = na
var int    anchorHiBar = na
var float  anchorLo    = na
var int    anchorLoBar = na
var string stateStr    = "No Active Structure"
var int    stickyAge   = 0

var float  zoneTop        = na
var float  zoneBot        = na
var bool   zoneAlertFired = false

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

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

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

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

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

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

Стоимость полного кода
2 307,10₽ ≈ $28.20