Triple Supertrend Confluence
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator triple supertrend confluence for tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот индикатор Pine Script v6 для TradingView анализирует направление тренда с помощью трёх экземпляров Supertrend с разными параметрами (базовый, быстрый, медленный) и объединяет их результаты через механизм консенсуса. Используются адаптивный множитель на основе процентильного ранга ATR, фильтр по силе тренда ADX, фильтр объёма и защита от частых переключений через охлаждающий период. Индикатор отображает линии тренда, заливки фона, свечи-подсказки, уровни стоп-лосса и трёхуровневого тейк-профита, а также таблицу-дашборд с текущим состоянием всех фильтров.
Настройки программы
| Настройка | Описание |
|---|---|
| i_atrPeriod | ATR Len — Период расчёта ATR, используемого для определения ширины полос Supertrend |
| i_factor | Factor — Базовый множитель, определяющий расстояние полос Supertrend от цены |
| i_useAdaptFactor | Adaptive Factor — Включает адаптивное изменение множителя в зависимости от текущего процентильного ранга ATR |
| i_factorMin | Factor Min — Минимальное значение адаптивного множителя |
| i_factorMax | Factor Max — Максимальное значение адаптивного множителя |
| i_factorRankLen | Factor Rank Len — Длина периода для расчёта процентильного ранга ATR |
| i_useAdxFilter | Use ADX Filter — Включает фильтрацию сигналов по силе тренда ADX |
| i_adxThresh | ADX Threshold — Минимальное значение ADX, при котором фильтр считается пройденным |
| i_adxLen | ADX Length — Период расчёта индекса ADX |
| i_adaptFilterType | Adaptive Filter — Тип скользящей средней, используемой в качестве источника данных для Supertrend |
| i_adaptFilterLen | Adaptive Filter Len — Период выбранной скользящей средней |
| i_useHtf | Use HTF Confluence — Включает проверку направления тренда на более высоком таймфрейме |
| i_htfTf | HTF — Таймфрейм для получения данных более высокого уровня |
| i_useVolFilter | Use Volume Filter — Включает фильтрацию сигналов по объёму торгов |
| i_volLen | Volume Avg Len — Период для расчёта среднего объёма |
| i_volMult | Volume Mult — Множитель объёма, определяющий минимальный порог прохождения фильтра |
| i_useCooldown | Use Cooldown Guard — Включает блокировку новых сигналов в течение заданного числа баров после разворота |
| i_cooldownBars | Cooldown Bars — Количество баров, в течение которых подавляются новые сигналы после переключения |
| i_useConsensus | Use Triple Consensus — Включает требование совпадения направления как минимум двух из трёх экземпляров Supertrend |
| i_factorFast | Fast Factor — Множитель для быстрого экземпляра Supertrend |
| i_periodFast | Fast ATR Len — Период ATR для быстрого экземпляра Supertrend |
| i_factorSlow | Slow Factor — Множитель для медленного экземпляра Supertrend |
| i_periodSlow | Slow ATR Len — Период ATR для медленного экземпляра Supertrend |
| i_lockSignal | Lock Signal — Блокирует отрисовку новых уровней на последнем баре, фиксируя текущий сигнал |
| i_showLevels | Show Trade Levels — Отображает линии стоп-лосса, входа и трёх уровней тейк-профита с подписями |
| i_slAtrMult | SL ATR Mult — Множитель ATR для расчёта расстояния стоп-лосса от цены входа |
| i_tp1RR | TP1 R:R — Коэффициент риск/прибыль для первого уровня тейк-профита |
| i_tp2RR | TP2 R:R — Коэффициент риск/прибыль для второго уровня тейк-профита |
| i_tp3RR | TP3 R:R — Коэффициент риск/прибыль для третьего уровня тейк-профита |
| i_showHeatmap | Heatmap Candles — Окрашивает свечи в цвет текущего направления тренда |
| i_showLabels | BULL/BEAR Labels — Отображает метки BULL или BEAR на барах подтверждённых разворотов |
| i_showDash | Show Dashboard — Включает отображение таблицы-дашборда с текущим состоянием фильтров |
| i_dashPos | Position — Позиция дашборда на графике |
| i_actionLong | Long Action — Строка действия для сигнала на открытие длинной позиции |
| i_actionShort | Short Action — Строка действия для сигнала на открытие короткой позиции |
| i_actionCloseLong | Close Long Action — Строка действия для сигнала на закрытие длинной позиции |
| i_actionCloseShort | Close Short Action — Строка действия для сигнала на закрытие короткой позиции |
| c_up | Up Color — Цвет линий и заливки при восходящем тренде |
| c_down | Down Color — Цвет линий и заливки при нисходящем тренде |
| c_unconfirmed | Unconfirmed Color — Цвет линий, когда сигнал ещё не подтверждён |
| c_fillUp | Up Fill — Цвет заливки фона при восходящем тренде |
| c_fillDown | Down Fill — Цвет заливки фона при нисходящем тренде |
| c_cooldownBg | Cooldown BG — Цвет фона во время активного охлаждающего периода |
| c_heatUp | Heatmap Up — Цвет свечей при восходящем тренде |
| c_heatDown | Heatmap Down — Цвет свечей при нисходящем тренде |
| c_bullLbl | Bull Label — Цвет метки BULL на барах разворота вверх |
| c_bearLbl | Bear Label — Цвет метки BEAR на барах разворота вниз |
| C_DASH_HDR | Dash Header — Цвет заголовков ячеек дашборда |
| C_DASH_BG | Dash BG — Фоновый цвет ячеек дашборда |
| C_DASH_TXT | Dash Text — Цвет текста в дашборде |
| c_slColor | SL Color — Цвет линии стоп-лосса |
| c_entryColor | Entry Color — Цвет линии входа в сделку |
| c_tp1Color | TP1 Color — Цвет линии первого уровня тейк-профита |
| c_tp2Color | TP2 Color — Цвет линии второго уровня тейк-профита |
| c_tp3Color | TP3 Color — Цвет линии третьего уровня тейк-профита |
| c_riskFill | Risk Fill — Цвет заливки между линиями стоп-лосса и входа |
| c_rewardFill | Reward Fill — Цвет заливки между линией входа и третьим уровнем тейк-профита |
Поиск по коду файла
https:www.forexstyrategiesresources.com
indicator("Triple Supertrend Confluence", overlay = true)
var string GRP_CORE = "⚙️ Core"
var string GRP_FILT = "🕯️ Filters"
var string GRP_CONF = "🧭 Consensus"
var string GRP_TRADE = "📐 Trade Tools"
var string GRP_VIS = "🎨 Visuals"
var string _mt741a = "📊 Dashboard"
var string GRP_WH = "🔔 Alerts"
var string GRP_COL = "🌈 Colors"
i_atrPeriod = input.int(10, "ATR Len", group = GRP_CORE, minval = 1)
i_factor = input.float(3.0, "Factor", group = GRP_CORE, minval = 0.01, step = 0.01)
i_useAdaptFactor = input.bool(true, "🌊 Adaptive Factor", group = GRP_CORE, tooltip = "")
i_factorMin = input.float(1.5, "Factor Min", group = GRP_CORE, minval = 0.01, step = 0.01)
i_factorMax = input.float(4.5, "Factor Max", group = GRP_CORE, minval = 0.01, step = 0.01)
i_factorRankLen = input.int(100, "Factor Rank Len", group = GRP_CORE, minval = 10)
i_useAdxFilter = input.bool(true, "📈 Use ADX Filter", group = GRP_FILT)
i_adxThresh = input.float(20.0, "ADX Threshold", group = GRP_FILT, minval = 0, step = 0.5)
i_adxLen = input.int(14, "ADX Length", group = GRP_FILT, minval = 1)
i_adaptFilterType = input.string("None", "🧠 Adaptive Filter", options = ["None", "SMA", "EMA", "RMA", "Double WMA", "Triple VWMA", "HMA", "LLAMA", "Kalman Filter"], group = GRP_FILT)
i_adaptFilterLen = input.int(20, "Adaptive Filter Len", group = GRP_FILT, minval = 1)
i_useHtf = input.bool(false, "🕐 Use HTF Confluence", group = GRP_FILT)
i_htfTf = input.timeframe("240", "HTF", group = GRP_FILT)
i_useVolFilter = input.bool(false, "📊 Use Volume Filter", group = GRP_FILT)
i_volLen = input.int(20, "Volume Avg Len", group = GRP_FILT, minval = 1)
i_volMult = input.float(1.2, "Volume Mult", group = GRP_FILT, minval = 0.1, step = 0.1)
i_useCooldown = input.bool(false, "🧊 Use Cooldown Guard", group = GRP_FILT, tooltip = "")
i_cooldownBars = input.int(10, "Cooldown Bars", group = GRP_FILT, minval = 1)
i_useConsensus = input.bool(true, "🧭 Use Triple Consensus", group = GRP_CONF)
i_factorFast = input.float(2.0, "Fast Factor", group = GRP_CONF, minval = 0.01, step = 0.01)
i_periodFast = input.int(7, "Fast ATR Len", group = GRP_CONF, minval = 1)
i_factorSlow = input.float(4.0, "Slow Factor", group = GRP_CONF, minval = 0.01, step = 0.01)
i_periodSlow = input.int(14, "Slow ATR Len", group = GRP_CONF, minval = 1)
i_lockSignal = input.bool(false, "🔒 Lock Signal", group = GRP_TRADE, tooltip = "Freeze current signal · block new ones")
i_showLevels = input.bool(true, "📌 Show Trade Levels", group = GRP_TRADE, tooltip = "Draw SL/Entry/TP lines and labels on new confirmed signals")
i_slAtrMult = input.float(1.5, "SL ATR Mult", group = GRP_TRADE, minval = 0.01, step = 0.1)
i_tp1RR = input.float(1.0, "TP1 R:R", group = GRP_TRADE, minval = 0.01, step = 0.1)
i_tp2RR = input.float(2.0, "TP2 R:R", group = GRP_TRADE, minval = 0.01, step = 0.1)
i_tp3RR = input.float(3.0, "TP3 R:R", group = GRP_TRADE, minval = 0.01, step = 0.1)
i_showHeatmap = input.bool(true, "🕯️ Heatmap Candles", group = GRP_VIS)
i_showLabels = input.bool(true, "🏷️ BULL/BEAR Labels", group = GRP_VIS)
i_showDash = input.bool(true, "📊 Show Dashboard", group = _mt741a)
i_dashPos = input.string("Top Right", "Position", group = _mt741a, options = ["Top Right", "Top Left", "Bottom Right", "Bottom Left"])
i_actionLong = input.string("long", "↑ Long Action", group = GRP_WH)
i_actionShort = input.string("short", "↓ Short Action", group = GRP_WH)
i_actionCloseLong = input.string("closelong", "✕ Close Long Action", group = GRP_WH)
i_actionCloseShort = input.string("closeshort", "✕ Close Short Action", group = GRP_WH)
c_up = input.color(color.green, "Up Color", group = GRP_COL)
c_down = input.color(color.red, "Down Color", group = GRP_COL)
c_unconfirmed = input.color(color.gray, "Unconfirmed Color", group = GRP_COL)
c_fillUp = input.color(color.new(color.green, 90), "Up Fill", group = GRP_COL)
c_fillDown = input.color(color.new(color.red, 90), "Down Fill", group = GRP_COL)
c_cooldownBg = input.color(color.new(#787b86, 85), "Cooldown BG", group = GRP_COL)
c_heatUp = input.color(color.new(color.green, 0), "Heatmap Up", group = GRP_COL)
c_heatDown = input.color(color.new(color.red, 0), "Heatmap Down", group = GRP_COL)
c_bullLbl = input.color(color.new(color.green, 0), "Bull Label", group = GRP_COL)
c_bearLbl = input.color(color.new(color.red, 0), "Bear Label", group = GRP_COL)
C_DASH_HDR = input.color(color.new(#3a2a6d, 55), "Dash Header", group = GRP_COL)
C_DASH_BG = input.color(color.new(#0a0f1a, 10), "Dash BG", group = GRP_COL)
C_DASH_TXT = input.color(color.new(#ffffff, 0), "Dash Text", group = GRP_COL)
c_slColor = input.color(#ef5350, "SL Color", group = GRP_COL)
c_entryColor = input.color(#2196f3, "Entry Color", group = GRP_COL)
c_tp1Color = input.color(color.new(#26a69a, 40), "TP1 Color", group = GRP_COL)
c_tp2Color = input.color(color.new(#26a69a, 20), "TP2 Color", group = GRP_COL)
c_tp3Color = input.color(color.new(#26a69a, 0), "TP3 Color", group = GRP_COL)
c_riskFill = input.color(color.new(#ef5350, 80), "Risk Fill", group = GRP_COL)
c_rewardFill = input.color(color.new(#26a69a, 85), "Reward Fill", group = GRP_COL)
f_sma(float src, int len) =>
ta.sma(src, len)
f_ema(float src, int len) =>
ta.ema(src, len)
f_rma(float src, int len) =>
ta.rma(src, len)
f_doubleWma(float src, int len) =>
float _w1 = ta.wma(src, len)
float _w2 = ta.wma(_w1, len)
_w2
f_tripleVwma(float src, int len) =>
float _v1 = ta.vwma(src, len)
float _v2 = ta.vwma(_v1, len)
float _v3 = ta.vwma(_v2, len)
_v3
f_hma(float src, int len) =>
ta.hma(src, len)
f_llama(float src, int len) =>
float _mean = ta.sma(src, len)
float _slope = (src - src[len]) / len
_mean + _slope * (len / 2)
f_kalman(float src, int len) =>
var float _est = na
var float _err = 1.0
float _q = 1.0 / len
float _r = 1.0
_est := na(_est) ? src : _est
float _predErr = _err + _q
float _gain = _predErr / (_predErr + _r)
_est := _est + _gain * (src - _est)
_err := (1 - _gain) * _predErr
_est
float _mt741b = i_adaptFilterType == "SMA" ? f_sma(hl2, i_adaptFilterLen) :
i_adaptFilterType == "EMA" ? f_ema(hl2, i_adaptFilterLen) :
i_adaptFilterType == "RMA" ? f_rma(hl2, i_adaptFilterLen) :
i_adaptFilterType == "Double WMA" ? f_doubleWma(hl2, i_adaptFilterLen) :
i_adaptFilterType == "Triple VWMA" ? f_tripleVwma(hl2, i_adaptFilterLen) :
i_adaptFilterType == "HMA" ? f_hma(hl2, i_adaptFilterLen) :
i_adaptFilterType == "LLAMA" ? f_llama(hl2, i_adaptFilterLen) :
i_adaptFilterType == "Kalman Filter" ? f_kalman(hl2, i_adaptFilterLen) : hl2
[_diPlus, _diMinus, _adxVal] = ta.dmi(i_adxLen, i_adxLen)
bool _adxPass = not i_useAdxFilter or _adxVal >= i_adxThresh
float _atrRaw = ta.atr(i_atrPeriod)
float _atrPctRank = ta.percentrank(_atrRaw, i_factorRankLen)
float _adaptiveFactor = i_useAdaptFactor ? (na(_atrPctRank) ? i_factor : i_factorMin + (i_factorMax - i_factorMin) * (_atrPctRank / 100)) : i_factor
f_supertrend(float src, float factor, int atrPeriod) =>
float _atr = ta.atr(atrPeriod)
float _upperBand = src + factor * _atr
float _lowerBand = src - factor * _atr
float _prevLowerBand = nz(_lowerBand[1])
float _prevUpperBand = nz(_upperBand[1])
_lowerBand := _lowerBand > _prevLowerBand or close[1] < _prevLowerBand ? _lowerBand : _prevLowerBand
_upperBand := _upperBand < _prevUpperBand or close[1] > _prevUpperBand ? _upperBand : _prevUpperBand
int _dir = na
float _st = na
float _prevSt = _st[1]
if na(_atr[1])
_dir := 1
else if _prevSt == _prevUpperBand
_dir := close > _upperBand ? -1 : 1
else
_dir := close < _lowerBand ? 1 : -1
_st := _dir == -1 ? _lowerBand : _upperBand
[_st, _dir]
[supertrend, direction] = f_supertrend(_mt741b, _adaptiveFactor, i_atrPeriod)
[_stFast, _dirFast] = f_supertrend(_mt741b, i_factorFast, i_periodFast)
[_stSlow, _dirSlow] = f_supertrend(_mt741b, i_factorSlow, i_periodSlow)
int _agreeCount = (direction == _dirFast ? 1 : 0) + (direction == _dirSlow ? 1 : 0) + 1
bool _consensusPass = not i_useConsensus or _agreeCount >= 2
f_htfDirection() =>
[_htfSt, _htfDir] = f_supertrend(hl2, i_factor, i_atrPeriod)
_htfDir
float _htfDirRaw = request.security(syminfo.tickerid, i_htfTf, f_htfDirection()[1], lookahead = barmerge.lookahead_on)
bool _htfPass = not i_useHtf or (direction == -1 ? _htfDirRaw == -1 : _htfDirRaw == 1)
float _volSma = ta.sma(volume, i_volLen)
bool _hasVolume = not na(volume) and volume > 0
bool _volPass = not i_useVolFilter or not _hasVolume or volume >= _volSma * i_volMult
bool _flip = direction != direction[1]
var int _lastFlipBar = 0
var int _longCooldownEnd = na
var int _shortCooldownEnd = na
bool _flipConfirmed = direction[1] != direction[2]
if _flipConfirmed
int _segLen = (bar_index - 1) - _lastFlipBar
if _segLen <= i_cooldownBars
if direction[2] == -1
_longCooldownEnd := (bar_index - 1) + i_cooldownBars
else
_shortCooldownEnd := (bar_index - 1) + i_cooldownBars
_lastFlipBar := bar_index - 1
bool _longCooldownActive = i_useCooldown and not na(_longCooldownEnd) and bar_index <= _longCooldownEnd
bool _shortCooldownActive = i_useCooldown and not na(_shortCooldownEnd) and bar_index <= _shortCooldownEnd
bool _cooldownPass = direction == -1 ? not _longCooldownActive : not _shortCooldownActive
bool _confirmed = _adxPass and _consensusPass and _htfPass and _volPass and _cooldownPass
bool _confirmedFlipUp = _flip and direction == -1 and _confirmed
bool _confirmedFlipDown = _flip and direction == 1 and _confirmed
float _atrForLevels = ta.atr(i_atrPeriod)
float _entryPriceLong = close
float _slPriceLong = close - _atrForLevels * i_slAtrMult
float _tp1PriceLong = close + (close - _slPriceLong) * i_tp1RR
float _tp2PriceLong = close + (close - _slPriceLong) * i_tp2RR
float _tp3PriceLong = close + (close - _slPriceLong) * i_tp3RR
float _entryPriceShort = close
float _slPriceShort = close + _atrForLevels * i_slAtrMult
float _tp1PriceShort = close - (_slPriceShort - close) * i_tp1RR
float _tp2PriceShort = close - (_slPriceShort - close) * i_tp2RR
float _tp3PriceShort = close - (_slPriceShort - close) * i_tp3RR
bool _locked = i_lockSignal and barstate.islast
var line slLine = na
var line entryLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var label slLbl = na
var label entryLbl = na
var label tp1Lbl = na
var label tp2Lbl = na
var label tp3Lbl = na
var linefill riskFill = na
var linefill rewardFill = na
var int lastSignalBar = na
f_deleteLevels() =>
line.delete(slLine)
line.delete(entryLine)
line.delete(tp1Line)
line.delete(tp2Line)
line.delete(tp3Line)
label.delete(slLbl)
label.delete(entryLbl)
label.delete(tp1Lbl)
label.delete(tp2Lbl)
label.delete(tp3Lbl)
linefill.delete(riskFill)
linefill.delete(rewardFill)
string _longInner = str.format(
'"action":"{0}","ticker":"{1}","tf":"{2}","direction":"long","price":"{3}"',
i_actionLong, syminfo.tickerid, timeframe.period, str.tostring(close, format.mintick))
string _shortInner = str.format(
'"action":"{0}","ticker":"{1}","tf":"{2}","direction":"short","price":"{3}"',
i_actionShort, syminfo.tickerid, timeframe.period, str.tostring(close, format.mintick))
string _closeLongInner = str.format(
'"action":"{0}","tiПоказано первые 50% кода (символов: 19633)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.