OPEN-SOURCE SCRIPT

Intraday Futures Strategy with Filters

//version=5
indicator("Intraday Futures Strategy with Filters", overlay=true)

// === Параметры индикатора ===
// Скользящие средние
shortEmaLength = input.int(9, title="Короткая EMA", minval=1)
longEmaLength = input.int(21, title="Длинная EMA", minval=1)

// RSI
rsiLength = input.int(14, title="Период RSI", minval=1)
rsiThreshold = input.int(50, title="RSI Threshold", minval=1, maxval=100)

// ATR (волатильность)
atrLength = input.int(14, title="Период ATR")
atrMultiplier = input.float(1.0, title="ATR Multiplier", minval=0.1, step=0.1)

// Долгосрочный тренд
trendEmaLength = input.int(200, title="EMA для фильтра тренда", minval=1)

// Временные рамки
startHour = input.int(9, title="Час начала торговли", minval=0, maxval=23)
startMinute = input.int(0, title="Минута начала торговли", minval=0, maxval=59)
endHour = input.int(16, title="Час конца торговли", minval=0, maxval=23)
endMinute = input.int(0, title="Минута конца торговли", minval=0, maxval=59)

// Получаем текущие час и минуту
currentHour = hour(time)
currentMinute = minute(time)

// Проверка временного фильтра
timeFilter = (currentHour > startHour or (currentHour == startHour and currentMinute >= startMinute)) and
(currentHour < endHour or (currentHour == endHour and currentMinute <= endMinute))

// === Вычисления ===
// Скользящие средние
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
trendEma = ta.ema(close, trendEmaLength)

// RSI
rsi = ta.rsi(close, rsiLength)

// ATR
atr = ta.atr(atrLength)

// Сигналы пересечения EMA
bullishCrossover = ta.crossover(shortEma, longEma) // Короткая EMA пересекает длинную вверх
bearishCrossover = ta.crossunder(shortEma, longEma) // Короткая EMA пересекает длинную вниз

// Фильтры:
// 1. Трендовый фильтр: цена должна быть выше/ниже 200 EMA
longTrendFilter = close > trendEma
shortTrendFilter = close < trendEma

// 2. RSI фильтр
longRsiFilter = rsi > rsiThreshold
shortRsiFilter = rsi < rsiThreshold

// 3. Волатильность ATR: текущий диапазон должен быть больше заданного значения
atrFilter = (high - low) > atr * atrMultiplier

// Общие сигналы на покупку/продажу
buySignal = bullishCrossover and longTrendFilter and longRsiFilter and atrFilter and timeFilter
sellSignal = bearishCrossover and shortTrendFilter and shortRsiFilter and atrFilter and timeFilter

// === Графические элементы ===
// Отображение EMA на графике
plot(shortEma, color=color.blue, linewidth=2, title="Короткая EMA")
plot(longEma, color=color.orange, linewidth=2, title="Длинная EMA")
plot(trendEma, color=color.purple, linewidth=2, title="EMA для тренда (200)")

// Сигналы на графике
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Фон для сигналов
bgcolor(buySignal ? color.new(color.green, 90) : sellSignal ? color.new(color.red, 90) : na, title="Signal Background")
Bands and ChannelsBill Williams IndicatorsCandlestick analysis

Script open-source

Dans le plus pur esprit TradingView, l'auteur de ce script l'a publié en open-source, afin que les traders puissent le comprendre et le vérifier. Bravo à l'auteur! Vous pouvez l'utiliser gratuitement, mais la réutilisation de ce code dans une publication est régie par nos Règles. Vous pouvez le mettre en favori pour l'utiliser sur un graphique.

Vous voulez utiliser ce script sur un graphique ?

Clause de non-responsabilité