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

???? SMC Reversal Engine v3.5 – Clean FVG + Dashboard

mr_mt4_smc_reversal_engine_v3_5_–_clean_fvg_+_dashboard_for_tradingview.pine

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

ares_indicator.pineTradingView · 1 общих теговgold_trend_revers.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!-mt4 x-xardg-rsi.mq5MQL5 / MetaTrader 5 · 1 общих тегов! cycle-identifier.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!! rsi ma simple+arrows 1.2 (mtf).mq5MQL5 / MetaTrader 5 · 1 общих теговprecisionflowea.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

На графике отображаются точки разворота HH/HL/LH/LL, линии уровней HTF, подписи структурных событий и таблица-дашборд с текущим трендом, ожидаемым следующим движением и показателем точности предсказаний. Также реализованы сигналы покупки/продажи на основе пересечения EMA, предупреждения о ранних вершинах на основе длины теней и RSI-дивергенций, а также справочник SMC-терминологии.

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

НастройкаОписание
htf Высокий таймфрейм структуры — Таймфрейм, с которого берутся данные для анализа структуры и уровней HTF High/Low.
useAutoFractal Авточувствительность фракталов — Включает автоматический подбор чувствительности обнаружения фракталов в зависимости от выбранного HTF.
manualFractalSensitivity Ручная чувствительность фракталов — Количество баров чувствительности пивотов, используемое при отключённом автоматическом режиме.
showStructureLines Показывать линии HTF High/Low — Отображает на графике горизонтальные линии последних выявленных уровней высока и низа HTF.
dashboardPosition Позиция дашборда — Угловое расположение таблицы-дашборда на графике: верхний левый, верхний правый, нижний левый или нижний правый.
minimalMode Минимальный режим — Скрывает таблицу дашборда и большинство подписей на графике для уменьшения загруженности.
chochLabelOffset Смещение подписи CHoCH — Горизонтальное смещение подписей сигналов Change of Character от бара события.
bosLabelOffset Смещение подписи BOS — Горизонтальное смещение подписей сигналов Break of Structure от бара события.
hlLabelOffset Смещение подписей HL/LL — Горизонтальное смещение подписей уровней Higher Low и Lower Low от бара события.
showFVG Показывать зоны FVG — Включает отображение зон Fair Value Gap в виде прямоугольников на графике.
showFVGFill Показывать заливку FVG — Определяет, заполнять ли зоны FVG полупрозрачным цветом или оставлять их пустыми.
markTapEntry Отмечать касание FVG — Добавляет метку и удаляет зону FVG при касании её ценой.
highlightTarget Показывать целевую линию FVG — Отображает целевую линию, привязанную к зоне FVG.
useTrendFilter Фильтр по направлению тренда — Показывает зоны FVG только в направлении текущего определённого тренда.
maxFVGs Максимум зон FVG — Ограничивает количество одновременно отображаемых зон FVG в каждом направлении.
fvgExtend Продление FVG — Определяет, в какую сторону растягивается прямоугольник зоны FVG: вправо или не растягивается.
fvgMaxLife Удаление FVG после N баров — Автоматически удаляет зону FVG, если она не была использована указанное количество баров.
enableBuySell Включить сигналы покупки/продажи — Активирует отображение меток BUY/SELL на основе пересечения быстрой и медленной EMA.
emaConfirm Требовать подтверждение EMA — При включении сигналы BUY/SELL формируются только при подтверждении пересечения EMA.
useAutoEMA Автодлины EMA — Автоматически подбирает длины быстрой и медленной EMA в зависимости от выбранного HTF.
manualFastEMA Ручная быстрая EMA — Длина быстрой EMA, используемая при отключённом автоматическом режиме.
manualSlowEMA Ручная медленная EMA — Длина медленной EMA, используемая при отключённом автоматическом режиме.
showSwingTags Показывать теги HH/HL/LH/LL — Отображает подписи Higher High, Higher Low, Lower High, Lower Low рядом с соответствующими свечами.
showCheatSheet Показывать справочник SMC — Отображает таблицу-справочник с расшифровкой терминов CHoCH и BOS в углу графика.
showEarlyTop Показывать предупреждения ранних вершин — Включает раннее предупреждение о возможных разворотах на основе длины теней свечей.
wickThresh Порог длины тени (%) — Процентовый порог длины тени свечи, при превышении которого срабатывает предупреждение о ранней вершине.
rsiLen Длина RSI — Период расчёта индикатора RSI, используемого для обнаружения дивергенций.
rsiDivThresh Порог дивергенции RSI — Пороговое значение для определения дивергенции RSI.
showNarrativeLabels Показывать нарративные подписи — Включает отображение текстовых подписей с описанием текущего состояния структуры на графике.
useAutoNarrativeLabels Автоограничение нарративных подписей — Автоматически ограничивает максимальное количество нарративных подписей в зависимости от HTF.
manualMaxNarrativeLabels Максимум нарративных подписей — Ручное ограничение количества отображаемых нарративных подписей при отключённом автоматическом режиме.
showPredictionAccuracy Показывать точность предсказаний — Отображает в дашборде процент подтверждённых структурных предсказаний.
showOnlyRecentLabels Показывать только последние метки — Ограничивает отображение меток HH/HL/LL/LH только самыми свежими.
Получить полный код

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

indicator("???? SMC Reversal Engine v3.5 – Clean FVG + Dashboard", overlay=true, max_lines_count=500, max_boxes_count=500, max_labels_count=500)

htf = input.timeframe("60", "HTF for Structure")

useAutoFractal = input.bool(true, "Auto Fractal Sensitivity?", group="Fractal Settings")
manualFractalSensitivity = input.int(3, "Manual Sensitivity (when Auto OFF)", minval=1, group="Fractal Settings")

fractalSensitivity = useAutoFractal ? (
     htf == "1"   ? 1 : htf == "5"   ? 2 : htf == "15"  ? 3 : htf == "30"  ? 4 :
     htf == "60"  ? 5 : htf == "120" ? 6 : htf == "240" ? 7 : htf == "D"   ? 8 :
     htf == "W"   ? 10 : htf == "M"   ? 12 : 3) : manualFractalSensitivity

showStructureLines = input.bool(true, "Show HTF High/Low Lines")
dashboardPosition = input.string("Top Right", "Dashboard Position", options=["Top Left","Top Right","Bottom Left","Bottom Right"])
minimalMode = input.bool(false, "Minimal Mode (hide table & most labels)")

chochLabelOffset = input.int(6, "CHoCH Label Offset", options=[2,4,6,8,12])
bosLabelOffset   = input.int(4, "BOS Label Offset", options=[2,4,6,8,12])
hlLabelOffset    = input.int(2, "HL/LL Label Offset", options=[2,4,6,8,12])

showFVG          = input.bool(true, "Show FVG Zones")
showFVGFill      = input.bool(true, "Show FVG Fill")
markTapEntry     = input.bool(true, "Mark Entry When FVG Is Tapped")
highlightTarget  = input.bool(true, "Show FVG‑Based Target Line")
useTrendFilter   = input.bool(true, "Only Show FVGs in Trend Direction")
maxFVGs          = input.int(3, "Max FVG Zones per direction", minval=1)
fvgExtend        = input.string("right", "FVG Extend", options=["right","none"]) == "right" ? extend.right : extend.none
fvgMaxLife       = input.int(50, "Delete FVG after N bars", minval=10)

enableBuySell    = input.bool(true, "Enable Buy/Sell Signals")
emaConfirm       = input.bool(true, "Require EMA Crossover Confirmation")
useAutoEMA       = input.bool(true, "Auto EMA lengths?")
manualFastEMA    = input.int(9, "Manual Fast EMA", minval=1)
manualSlowEMA    = input.int(21, "Manual Slow EMA", minval=1)

fastLen = useAutoEMA ? (htf=="1"?5:htf=="5"?9:htf=="15"?12:htf=="30"?14:htf=="60"?21:htf=="120"?34:htf=="240"?55:htf=="D"?89:144) : manualFastEMA

slowLen = useAutoEMA ? (htf=="1"?13:htf=="5"?21:htf=="15"?34:htf=="30"?50:htf=="60"?89:htf=="120"?144:htf=="240"?200:300) : manualSlowEMA

showSwingTags   = input.bool(true, "Show HH/HL/LH/LL tags", group="Educational")
showCheatSheet  = input.bool(true, "Show SMC Cheat-Sheet", group="Educational")

showEarlyTop    = input.bool(true, "Show Early Top Warnings")
wickThresh      = input.float(0.5, "Wick Size Threshold (%)", step=0.1)
rsiLen          = input.int(14, "RSI Length")
rsiDivThresh    = input.float(0.0, "RSI Divergence Threshold", step=0.1)

showNarrativeLabels       = input.bool(true, "Show Chart Narratives")
useAutoNarrativeLabels    = input.bool(true, "Auto Max Narrative Labels?")
manualMaxNarrativeLabels  = input.int(5, "Manual Max Narrative Labels", minval=1)

autoMaxNarrLabels = htf == "1" ? 12 : htf == "5" ? 10 : htf == "15" ? 8 : htf == "30" ? 6 : htf == "60" ? 5 : htf == "120" ? 4 : htf == "D" ? 3 : htf == "W" ? 2 : 5
maxNarrativeLabels = useAutoNarrativeLabels ? autoMaxNarrLabels : manualMaxNarrativeLabels

showPredictionAccuracy = input.bool(true, "Show Prediction Accuracy Rate")
showOnlyRecentLabels   = input.bool(true, "Show Only Most Recent HH/HL/LL/LH Labels")

isFractalHigh = ta.pivothigh(high, fractalSensitivity, fractalSensitivity)
isFractalLow  = ta.pivotlow(low, fractalSensitivity, fractalSensitivity)

getConfidenceLabel(p) =>
    p >= 90 ? "Very High ✅" :p >= 75 ? "High ????" :p >= 60 ? "Moderate ????" :p >= 40 ? "Low ????" : "Very Low ❌"

drawLabel(_offset, _y, _txt, _col) =>
    line.new(bar_index, _y, bar_index + _offset, _y, color=_col, style=line.style_dotted)
    label.new(bar_index + _offset, _y, _txt, style=label.style_label_left, color=color.new(_col, 0), textcolor=color.white, size=size.small)

getFormattedDate(t) =>
    year = year(t)
    month = month(t)
    day = dayofmonth(t)
    hour = hour(t)
    minute = minute(t)
    str.tostring(year) + "-" + str.tostring(month, "00") + "-" + str.tostring(day, "00") + " " + str.tostring(hour, "00") + ":" + str.tostring(minute, "00")

var float lastSwingHighEH = na
var float lastSwingHighRSI = na
rsi = ta.rsi(close, rsiLen)

htfPivotHigh = request.security(syminfo.tickerid, htf, ta.pivothigh(high, fractalSensitivity, fractalSensitivity))
htfPivotLow  = request.security(syminfo.tickerid, htf, ta.pivotlow(low, fractalSensitivity, fractalSensitivity))

htfHigh = not na(htfPivotHigh) ? htfPivotHigh : na
htfLow  = not na(htfPivotLow)  ? htfPivotLow  : na

var float lastHigh = na
var float lastLow  = na
var string lastHighType = ""
var string lastLowType  = ""

if not na(htfHigh)
    lastHigh := htfHigh
    lastHighType := str.tostring(htfHigh, "#.##")

if not na(htfLow)
    lastLow := htfLow
    lastLowType := str.tostring(htfLow, "#.##")

plot(showStructureLines ? lastHigh : na, title="HTF High", color=color.red)
plot(showStructureLines ? lastLow  : na, title="HTF Low",  color=color.green)

pivotHigh = ta.pivothigh(high, fractalSensitivity, fractalSensitivity)
pivotLow  = ta.pivotlow(low, fractalSensitivity, fractalSensitivity)

bullishCHoCH_raw = not na(pivotHigh) and pivotHigh > lastHigh
bearishCHoCH_raw = not na(pivotLow)  and pivotLow  < lastLow

bullishBOS = not na(pivotLow) and pivotLow > lastLow
bearishBOS = not na(pivotHigh) and pivotHigh < lastHigh

var string trendDir = "Neutral"
trendDir := bullishBOS or bullishCHoCH_raw ? "Bullish" : bearishBOS or bearishCHoCH_raw ? "Bearish" : trendDir

bullishCHoCH = trendDir != "Bullish" and bullishCHoCH_raw
bearishCHoCH = trendDir != "Bearish" and bearishCHoCH_raw

var int hhSeq = 0, hlSeq = 0, lhSeq = 0, llSeq = 0
var string nextExpect = "—"
var float lastSwingHigh = na
var float lastSwingLow  = na

var int predictionCount = 0
var int correctPredictionCount = 0
var float predictionRate = na
var bool expectingHL = false
var bool expectingLH = false
var bool expectingHH = false
var bool expectingLL = false

var label predLbl = na
if not na(predLbl)
    label.delete(predLbl)

trendDir := bullishCHoCH or bullishBOS ? "Bullish" : bearishCHoCH or bearishBOS ? "Bearish" : trendDir

nextExpect := bullishCHoCH ? "Expect HL" :
              bearishCHoCH ? "Expect LH" :
              bullishBOS   ? "Expect HH" :
              bearishBOS   ? "Expect LL" :
              trendDir == "Bullish" ? "Look for HL" :
              trendDir == "Bearish" ? "Look for LH" :
              "⏳ Waiting for Structure"

if bullishCHoCH
    expectingHL := true
    predictionCount += 1
if bearishCHoCH
    expectingLH := true
    predictionCount += 1
if bullishBOS
    expectingHH := true
    predictionCount += 1
if bearishBOS
    expectingLL := true
    predictionCount += 1

if expectingHL and not na(pivotLow) and low > lastLow
    correctPredictionCount += 1
    expectingHL := false
    predLbl := label.new(bar_index + 1, low, "✅ HL Confirmed", style=label.style_label_left, color=na, textcolor=color.green, size=size.normal)

if expectingLH and not na(pivotHigh) and high < lastHigh
    correctPredictionCount += 1
    expectingLH := false
    predLbl := label.new(bar_index + 1, high, "✅ LH Confirmed", style=label.style_label_left, color=na, textcolor=color.maroon, size=size.normal)

if expectingHH and not na(pivotHigh) and high > lastHigh
    correctPredictionCount += 1
    expectingHH := false
    predLbl := label.new(bar_index + 1, high, "✅ HH Confirmed", style=label.style_label_left, color=na, textcolor=color.lime, size=size.normal)

if expectingLL and not na(pivotLow) and low < lastLow
    correctPredictionCount += 1
    expectingLL := false
    predLbl := label.new(bar_index + 1, low, "✅ LL Confirmed", style=label.style_label_left, color=na, textcolor=color.red, size=size.normal)

predictionRate := predictionCount > 0 ? (correctPredictionCount / predictionCount) * 100 : na

anticipate = bullishCHoCH ? "CHoCH Bullish → HL expected" :
             bearishCHoCH ? "CHoCH Bearish → LH expected" :
             bullishBOS ? "BOS Bullish → HH expected" :
             bearishBOS ? "BOS Bearish → LL expected" :
             trendDir == "Bullish" ? "Trend Bullish → Wait for HL" :
             trendDir == "Bearish" ? "Trend Bearish → Wait for LH" :
             "Neutral → No new structure"

if barstate.islast and not minimalMode and anticipate != "Neutral → No new structure"
    label.new(bar_index + 1, low, anticipate, style=label.style_label_left, color=color.aqua, textcolor=color.black, size=size.normal)

pos = dashboardPosition == "Top Left" ? position.top_left :
      dashboardPosition == "Top Right" ? position.top_right :
      dashboardPosition == "Bottom Left" ? position.bottom_left :
      position.bottom_right

var table infoTable = table.new(pos, 1, 9, border_width=1, bgcolor=color.new(color.black, 85), frame_color=color.white)

if barstate.islast and not minimalMode
    table.cell(infoTable, 0, 0, "Trend: " + trendDir, text_color=color.white)
    table.cell(infoTable, 0, 1, "Last High: " + lastHighType, text_color=color.white)
    table.cell(infoTable, 0, 2, "Last Low: " + lastLowType, text_color=color.white)
    table.cell(infoTable, 0, 3, "Next: " + nextExpect, text_color=color.yellow)

    bosText = bullishBOS ? "↑ Bullish BOS" : bearishBOS ? "↓ Bearish BOS" : "—"
    table.cell(infoTable, 0, 4, "BOS: " + bosText, text_color=color.teal)

    chochText = bullishCHoCH ? "↑ Bullish CHoCH" : bearishCHoCH ? "↓ Bearish CHoCH" : "—"
    table.cell(infoTable, 0, 5, "CHoCH: " + chochText, text_color=color.orange)

    accText = (showPredictionAccuracy and predictionRate >= 0) ? "Accuracy

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

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

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

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

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

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

Стоимость полного кода
1 551,70₽ ≈ $18.96