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

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 и перейдите к оплате.

Стоимость полного кода
1 963,30₽ ≈ $24.00