SMC SIGNALS
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smc signals 1.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
SMC SIGNALS — индикатор для TradingView (Pine Script v6), предназначенный для анализа рыночной структуры и визуализации институциональных зон на графике цены. Индикатор определяет точки пробоя ключевых уровней (Break of Structure), рисует зоны блоков и отображает метки сигналов.
Встроенные средства технического анализа включают расчёт свинг-высоких и свинг-низких, Z-score импульса цены и ранжирование объёма. Для построения уровней используется получение данных с недельного таймфрейма. Все элементы отрисовки реализованы через графические объекты Pine Script (линии, ящики, метки).
Индикатор поддерживает условные оповещения TradingView для бычьих и медвежьих сигналов, позволяет выделять торговые сессии (Лондон, Нью-Йорк, Токио, Сидней) и отображать предыдущие недельные максимум и минимум. В верхней панели показывается статистика: доля реализованных зон и количество активных зон повышенной вероятности.
Настройки программы
| Настройка | Описание |
|---|---|
| cfgShowDash | Показывать панель аналитики — Включает или отключает панель аналитики на графике. |
| cfgDashPos | Положение панели — Положение панели аналитики на графике. |
| cfgDashSize | Размер панели — Размер текста и элементов панели аналитики. |
| cfgPivotLength | Период свинг-уровней — Период поиска свинг-высоких и свинг-низких для определения структуры. |
| cfgBreakThreshold | Порог импульса (Z-Score) — Пороговый уровень импульса (Z-Score), необходимый для подтверждения пробоя структуры. |
| cfgDisplayMode | Режим отображения зон — Режим отображения зон: исторические или только активные. |
| cfgMaxBlocks | Максимум зон блоков — Максимальное количество одновременно отображаемых зон блоков. |
| cfgKeepMitigated | Отображение реализованных зон — Продлевает отображение зон после их реализации. |
| cfgFilterOverlap | Фильтр перекрытия зон — Фильтрует перекрывающиеся зоны блоков, не допуская их наложения. |
| cfgShowSessions | Выделять сессии — Включает или отключает выделение торговых сессий на графике. |
| cfgLondonActive | Сессия Лондона — Включает или отключает выделение сессии Лондона. |
| cfgLondonTime | Расписание Лондона — Временной диапазон сессии Лондона. |
| cfgLondonColor | Цвет Лондона — Цвет выделения сессии Лондона. |
| cfgNYActive | Сессия Нью-Йорка — Включает или отключает выделение сессии Нью-Йорка. |
| cfgNYTime | Расписание Нью-Йорка — Временной диапазон сессии Нью-Йорка. |
| cfgNYColor | Цвет Нью-Йорка — Цвет выделения сессии Нью-Йорка. |
| cfgTokyoActive | Сессия Токио — Включает или отключает выделение сессии Токио. |
| cfgTokyoTime | Расписание Токио — Временной диапазон сессии Токио. |
| cfgTokyoColor | Цвет Токио — Цвет выделения сессии Токио. |
| cfgSydneyActive | Сессия Сидней — Включает или отключает выделение сессии Сиднея. |
| cfgSydneyTime | Расписание Сиднея — Временной диапазон сессии Сиднея. |
| cfgSydneyColor | Цвет Сиднея — Цвет выделения сессии Сиднея. |
| cfgShowWeekly | Показывать недельные уровни — Включает или отключает отображение предыдущих недельного максимума и минимума. |
| cfgWhColor | Цель недельного максимума — Цвет линии предыдущего недельного максимума. |
| cfgWlColor | Цель недельного минимума — Цвет линии предыдущего недельного минимума. |
| cfgShowSignals | Показывать сигналы BUY/SELL — Включает или отключает отображение меток BUY и SELL на графике. |
Поиск по коду файла
indicator("SMC SIGNALS", "SMC Signals", overlay = true, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500)
color COLOR_BULL = #059669 // Emerald Green
color COLOR_BEAR = #DC2626 // Crimson Red
color COLOR_HPZ_BULL = #0284C7 // Sky Blue
color COLOR_HPZ_BEAR = #D97706 // Amber
color COLOR_NEUTRAL = #6B7280 // Slate Gray
color DASH_BG = #FFFFFF
color DASH_BORDER = #E5E7EB
color DASH_TEXT_PRIMARY = #111827
color DASH_TEXT_MUTED = #6B7280
string G_DASH = "Analytics Panel"
string G_MS = "Market Structure"
string G_OB = "Institutional Blocks"
string G_SESS = "Trading Sessions"
string G_WEEKLY = "Weekly Levels"
string G_SIGNALS = "Buy / Sell Signals"
bool cfgShowDash = input.bool(true, "Show Analytics Panel", group = G_DASH)
string cfgDashPos = input.string("Top Right", "Panel Position", options = ["Top Right", "Bottom Right", "Bottom Left"], group = G_DASH)
string cfgDashSize = input.string("Small", "Panel Size", options = ["Tiny", "Small", "Normal", "Large"], group = G_DASH)
int cfgPivotLength = input.int(7, "Pivot Lookback Period", minval = 1, group = G_MS)
float cfgBreakThreshold = input.float(0.5, "Break Momentum Threshold (Z-Score)", minval = 0.1, step = 0.1, group = G_MS)
string cfgDisplayMode = input.string("Historical", "View Mode", options = ["Historical", "Active Only"], group = G_OB)
int cfgMaxBlocks = input.int(10, "Maximum Active Blocks", minval = 1, maxval = 100, group = G_OB)
bool cfgKeepMitigated = input.bool(false, "Extend Mitigated Blocks", group = G_OB)
bool cfgFilterOverlap = input.bool(true, "Filter Overlapping Blocks", group = G_OB)
bool cfgShowSessions = input.bool(true, "Highlight Trading Sessions", group = G_SESS)
bool cfgLondonActive = input.bool(false, "London Session", group = G_SESS)
string cfgLondonTime = input.session("0800-1700:1234567", "London Schedule", group = G_SESS)
color cfgLondonColor = input.color(#2563EB, "London Color", group = G_SESS, inline = "LON")
bool cfgNYActive = input.bool(false, "New York Session", group = G_SESS)
string cfgNYTime = input.session("1300-2200:1234567", "New York Schedule", group = G_SESS)
color cfgNYColor = input.color(#EA580C, "NY Color", group = G_SESS, inline = "NY")
bool cfgTokyoActive = input.bool(false, "Tokyo Session", group = G_SESS)
string cfgTokyoTime = input.session("0000-0900:1234567", "Tokyo Schedule", group = G_SESS)
color cfgTokyoColor = input.color(#E11D48, "Tokyo Color", group = G_SESS, inline = "TYO")
bool cfgSydneyActive = input.bool(false, "Sydney Session", group = G_SESS)
string cfgSydneyTime = input.session("2100-0600:1234567", "Sydney Schedule", group = G_SESS)
color cfgSydneyColor = input.color(#CA8A04, "Sydney Color", group = G_SESS, inline = "SYD")
bool cfgShowWeekly = input.bool(true, "Show Prev Weekly High / Low", group = G_WEEKLY)
color cfgWhColor = input.color(#7C3AED, "Weekly High Color", group = G_WEEKLY, inline = "WH")
color cfgWlColor = input.color(#0D9488, "Weekly Low Color", group = G_WEEKLY, inline = "WL")
bool cfgShowSignals = input.bool(true, "Show Buy / Sell Signals", group = G_SIGNALS)
type StructureBlock
box boxRef
label labelRef
line pocRef
float score
float topVal
float btmVal
bool isBullish
bool isHighProb
bool isMitigated
int mitigationIndex
var array<StructureBlock> activeBlocks = array.new<StructureBlock>()
getPosition(string posStr) =>
switch posStr
"Top Right" => position.top_right
"Bottom Right" => position.bottom_right
"Bottom Left" => position.bottom_left
=> position.top_right
getSize(string sizeStr) =>
switch sizeStr
"Tiny" => size.tiny
"Small" => size.small
"Normal" => size.normal
"Large" => size.large
=> size.small
renderSessionRange(bool isEnabled, string sessionPattern, color sessionColor, string sessionLabel) =>
var box rangeBox = na
var label rangeLabel = na
var float highPrice = na
var float lowPrice = na
bool inSessionNow = not na(time(timeframe.period, sessionPattern))
bool sessionStarted = inSessionNow and not inSessionNow[1]
if isEnabled and inSessionNow
if sessionStarted
highPrice := high
lowPrice := low
rangeBox := box.new(bar_index, highPrice, bar_index, lowPrice, border_color = sessionColor, border_style = line.style_dotted, bgcolor = color.new(sessionColor, 94))
rangeLabel := label.new(bar_index, highPrice, sessionLabel, style = label.style_none, textcolor = sessionColor, size = size.small, textalign = text.align_center)
else
highPrice := math.max(highPrice, high)
lowPrice := math.min(lowPrice, low)
rangeBox.set_top(highPrice)
rangeBox.set_bottom(lowPrice)
rangeBox.set_right(bar_index)
rangeLabel.set_xy(math.round(math.avg(rangeBox.get_left(), bar_index)), highPrice)
float(na)
float prevWeeklyHigh = request.security(syminfo.tickerid, "W", high[1], lookahead = barmerge.lookahead_on)
float prevWeeklyLow = request.security(syminfo.tickerid, "W", low[1], lookahead = barmerge.lookahead_on)
var line weeklyHighLine = na
var line weeklyLowLine = na
var label weeklyHighLabel = na
var label weeklyLowLabel = na
if cfgShowWeekly
if na(weeklyHighLine)
weeklyHighLine := line.new(bar_index, prevWeeklyHigh, bar_index + 10, prevWeeklyHigh, color = cfgWhColor, width = 1, style = line.style_dashed)
weeklyLowLine := line.new(bar_index, prevWeeklyLow, bar_index + 10, prevWeeklyLow, color = cfgWlColor, width = 1, style = line.style_dashed)
weeklyHighLabel := label.new(bar_index + 12, prevWeeklyHigh, "PWH", color = color.new(cfgWhColor, 100), textcolor = cfgWhColor, style = label.style_none, size = size.small)
weeklyLowLabel := label.new(bar_index + 12, prevWeeklyLow, "PWL", color = color.new(cfgWlColor, 100), textcolor = cfgWlColor, style = label.style_none, size = size.small)
else
weeklyHighLine.set_xy1(bar_index - 50, prevWeeklyHigh)
weeklyHighLine.set_xy2(bar_index + 10, prevWeeklyHigh)
weeklyLowLine.set_xy1(bar_index - 50, prevWeeklyLow)
weeklyLowLine.set_xy2(bar_index + 10, prevWeeklyLow)
weeklyHighLabel.set_xy(bar_index + 12, prevWeeklyHigh)
weeklyLowLabel.set_xy(bar_index + 12, prevWeeklyLow)
float priceDiff = ta.change(close)
float meanDiff = ta.sma(priceDiff, 50)
float stdDevDiff = ta.stdev(priceDiff, 50)
float zScore = (priceDiff - meanDiff) / stdDevDiff
float volPercent = ta.percentrank(volume, 100)
float highPivot = ta.pivothigh(high, cfgPivotLength, cfgPivotLength)
float lowPivot = ta.pivotlow(low, cfgPivotLength, cfgPivotLength)
var float recentHighPivot = na
var float recentLowPivot = na
var int recentHighIndex = na
var int recentLowIndex = na
if not na(highPivot)
recentHighPivot := highPivot
recentHighIndex := bar_index - cfgPivotLength
if not na(lowPivot)
recentLowPivot := lowPivot
recentLowIndex := bar_index - cfgPivotLength
if cfgShowSessions
renderSessionRange(cfgLondonActive, cfgLondonTime, cfgLondonColor, "London")
renderSessionRange(cfgNYActive, cfgNYTime, cfgNYColor, "New York")
renderSessionRange(cfgTokyoActive, cfgTokyoTime, cfgTokyoColor, "Tokyo")
renderSessionRange(cfgSydneyActive, cfgSydneyTime, cfgSydneyColor, "Sydney")
bool bullishBreak = close > recentHighPivot and close[1] <= recentHighPivot and zScore > cfgBreakThreshold
bool bearishBreak = close < recentLowPivot Показано первые 50% кода (символов: 12050)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.