Adaptive SuperTrend - Trend, Regime Filter & Buy/Sell Signals
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «indicator adaptive supertrend for tradingview.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Адаптивный SuperTrend — индикатор анализа и отображения для TradingView, который автоматически подстраивает чувствительность трендовой линии под текущую волатильность рынка. Вместо фиксированного множителя используется ранжирование текущего ATR по окну истории: при высокой волатильности стоп расширяется, при низкой — сужается. Это позволяет индикатору работать на форекс, криптовалютах и индексах без ручной перенастройки.
Помимо адаптивного тренда, индикатор включает два фильтра для снижения ложных сигналов. Фильтр режима на основе коэффициента эффективности Кауфмана определяет, находится ли рынок в тренде или в боковике, и разрешает сигналы только в первом случае. Проверка импульса через экспоненциальную скользящую среднюю подтверждает совпадение направления импульса с новым трендом перед генерацией сигнала.
Индикатор отображает линию SuperTrend с эффектом свечения и заливкой, окрашивает свечи по тренду, выводит метки BUY и SELL, а также автоматически строит лестницу тейк-профитов и стоп-лосса (1R/2R/3R) для последнего сигнала. Информационная панель показывает текущий тренд, уровень уверенности, режим рынка, импульс и статистику сделок в реальном времени. Поддерживаются условия оповещений TradingView.
Настройки программы
| Настройка | Описание |
|---|---|
| atrLen | Период расчёта ATR (среднего истинного диапазона), используемого для построения трендовой линии стопа. |
| multMin | Минимальный множитель SuperTrend при низкой волатильности. Чем меньше значение, тем быстрее реакция на изменения тренда. |
| multMax | Максимальный множитель SuperTrend при высокой волатильности. Чем больше значение, тем устойчивее индикатор к ложным сигналам. |
| volLen | Размер окна для ранжирования текущей волатильности, определяющей адаптивный множитель. |
| useReg | При включении сигналы Buy/Sell генерируются только при наличии тренда, а не в боковике. |
| erLen | Период расчёта коэффициента эффективности (эффективность Кауфмана) для определения трендового режима. |
| erThr | Пороговое значение коэффициента эффективности: выше — рынок считается трендовым, ниже — боковым. |
| useMom | При включении сигналы принимаются только при совпадении направления импульса с новым трендом. |
| momLen | Период экспоненциальной скользящей средней, используемой для оценки импульса цены. |
| showFill | Отображение заливки области между трендовой линией и ценой. |
| glow | Включает эффект свечения для линии SuperTrend. |
| neonOn | Окрашивает свечи по цвету адаптивного тренда (бирюзовый вверх, розовый вниз). |
| showSig | Отображает графические метки BUY и SELL при появлении сигналов. |
| showLad | Рисует линии стоп-лосса и нескольких уровней тейк-профита (1R/2R/3R) для последнего сигнала. |
| showStat | Отслеживает статистику прошлых сигналов: процент выигрышных сделок (достигших TP1 до стоп-лосса). Без опережения. |
| showHUD | Отображает информационную панель (дашборд) с данными о тренде, уровне уверенности, режиме и статистике. |
| hudPos | Позиция размещения информационной панели на графике. |
| hudBg | Цвет фона информационной панели. |
| accent | Цвет акцентных элементов на информационной панели. |
Поиск по коду файла
indicator("Adaptive SuperTrend - Trend, Regime Filter & Buy/Sell Signals", "Adaptive SuperTrend", overlay = true, max_labels_count = 200)
TEAL_MID = #12B8A6
TEAL_HI = #4DFCE6
PINK_MID = #FF2E63
PINK_HI = #FF6FA3
GOLD = #FFB938
INK = #0B0E14
MUTE = #5C6675
INKHI = #EAEEF6
gT = "Adaptive Trend"
atrLen = input.int(10, "ATR length", minval = 2, group = gT, tooltip = "Lookback for the volatility (ATR) the trend stop is built on.")
multMin = input.float(1.5,"Min multiplier (calm)", minval = 0.5, step = 0.1, group = gT, tooltip = "Sensitivity in LOW volatility — smaller = reacts sooner.")
multMax = input.float(4.0,"Max multiplier (wild)", minval = 1.0, step = 0.1, group = gT, tooltip = "Sensitivity in HIGH volatility — larger = avoids whipsaw.")
volLen = input.int(100, "Volatility window", minval = 20, group = gT, tooltip = "Window used to rank current volatility (drives the adaptive multiplier).")
gR = "Regime Filter"
useReg = input.bool(true, "Only signal in trending regime", group = gR, tooltip = "Suppresses Buy/Sell while the market is ranging/choppy.")
erLen = input.int(14, "Efficiency length", minval = 3, group = gR, tooltip = "Kaufman efficiency-ratio lookback: directional travel vs total path.")
erThr = input.float(0.30,"Trend threshold", minval = 0.05, maxval = 0.9, step = 0.05, group = gR, tooltip = "Above this = trending (signals allowed). Below = range.")
gM = "Momentum Check"
useMom = input.bool(true, "Require momentum agreement", group = gM)
momLen = input.int(20, "Momentum EMA", minval = 2, group = gM)
gV = "Visuals"
showFill= input.bool(true, "Trend fill", group = gV)
glow = input.bool(true, "Glow line", group = gV)
neonOn = input.bool(true, "Neon trend candles", group = gV, tooltip = "Colour candles by the adaptive trend (turquoise up / magenta down).")
showSig = input.bool(true, "Buy/Sell labels", group = gV)
gTr = "Trade Levels & Stats"
showLad = input.bool(true, "Auto TP/SL ladder (R:R)", group = gTr, tooltip = "Draws stop (on the trend line) and TP1/TP2/TP3 at 1R/2R/3R for the latest signal.")
showStat= input.bool(true, "Live signal stats", group = gTr, tooltip = "Tracks past signals on the fly: win rate = share that reached TP1 (1R) before the stop. No lookahead.")
gP = "Panel"
showHUD = input.bool(true, "Show dashboard", group = gP)
hudPos = input.string("Top Right","Position", options = ["Top Right","Top Left","Bottom Right","Bottom Left","Middle Right"], group = gP)
hudBg = input.color(#0C0F16, "Background", group = gP)
accent = input.color(TEAL_MID, "Accent", group = gP)
hudPosition(string s) =>
switch s
"Top Right" => position.top_right
"Top Left" => position.top_left
"Bottom Right" => position.bottom_right
"Bottom Left" => position.bottom_left
=> position.middle_right
atr = ta.atr(atrLen)
volPr = ta.percentrank(atr, volLen) / 100.0 // 0..1 position of current ATR
mult = multMin + (multMax - multMin) * volPr
src = hl2
upBasic = src + mult * atr
loBasic = src - mult * atr
var float upperB = na
var float lowerB = na
var int dir = 1
upperB := (upBasic < nz(upperB[1]) or close[1] > nz(upperB[1])) ? upBasic : nz(upperB[1])
lowerB := (loBasic > nz(lowerB[1]) or close[1] < nz(lowerB[1])) ? loBasic : nz(lowerB[1])
dir := close > nz(upperB[1]) ? 1 : close < nz(lowerB[1]) ? -1 : nz(dir[1], 1)
st = dir == 1 ? lowerB : upperB
up = dir == 1
flipUp = dir == 1 and dir[1] == -1
flipDn = dir == -1 and dir[1] == 1
netMove = math.abs(close - close[erLen])
path = math.sum(math.abs(close - close[1]), erLen)
er = path != 0 ? netMove / path : 0.0
trending = er >= erThr
regimeOK = not useReg or trending
emaM = ta.ema(close, momLen)
momUp = close >= emaM
momOK_long = not useMom or momUp
momOK_short = not useMom or not momUp
buy = flipUp and regimeOK and momOK_long
sell = flipDn and regimeOK and momOK_short
erComp = math.min(1.0, er / 0.5)
momComp = atr > 0 ? math.min(1.0, math.abs(close - emaM) / (atr * 2.0)) : 0.0
momAlign = (close >= emaM) == up ? momComp : 0.0
slopeComp= atr > 0 ? math.min(1.0, math.abs(st - st[5]) / atr) : 0.0
conv = math.round(100 * (0.45 * erComp + 0.35 * momAlign + 0.20 * slopeComp))
var table wm = table.new(position.bottom_right, 1, 1)
if barstate.isfirst
table.cell(wm, 0, 0, "Telegram @SimpleForexTools", text_color = color.new(color.gray, 70), text_size = size.large)
var float tEntry = na
var float tSL = na
var float tT1 = na
var float tT2 = na
var float tT3 = na
var int tDir = 0
var bool tOpen = false
var int wins = 0
var int losses = 0
if tOpen
if tDir == 1
if high >= tT1
wins += 1
tOpen := false
else if low <= tSL
losses += 1
tOpen := false
else
if low <= tT1
wins += 1
tOpen := false
else if high >= tSL
losses += 1
tOpen := false
sig = buy or sell
if sig
if tOpen // flip closed a still-open trade -> counts as a stop
losses += 1
tOpen := false
tDir := buy ? 1 : -1
tEntry := close
tSL := st
rr = math.abs(tEntry - tSL)
tT1 := buy ? tEntry + rr : tEntry - rr
tT2 := buy ? tEntry + 2.0 * rr : tEntry - 2.0 * rr
tT3 := buy ? tEntry + 3.0 * rr : tEntry - 3.0 * rr
tOpen := true
resolved = wins + losses
winRate = resolved > 0 ? wins / resolved * 100.0 : na
var line lnS = na
var line ln1 = na
var line ln2 = na
var line ln3 = na
var label lbS = na
var label lb1 = na
var label lb2 = na
var label lb3 = na
f_setLad(line ln, label lb, float price, string txt, color c) =>
line.set_xy1(ln, bar_index, price)
line.set_xy2(ln, bar_index + 8, price)
line.set_color(ln, c)
label.set_xy(lb, bar_index + 8, price)
label.set_text(lb, txt)
label.set_color(lb, color.new(c, 0))
if showLad and sig
if na(lnS)
lnS := line.new(bar_index, tSL, bar_index + 8, tSL, color = PINK_MID, width = 1, style = line.style_dashed)
ln1 := line.new(bar_index, tT1, bar_index + 8, tT1, color = TEAL_MID, width = 1)
ln2 := line.new(bar_index, tT2, bar_index + 8, tT2, color = TEAL_MID, width = 1)
ln3 := line.new(bar_index, tT3, bar_index + 8, tT3, color = TEAL_MID, width = 1)
lbS := label.new(barПоказано первые 50% кода (символов: 9908)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.