
RSI Trend Departure Strategy Indicator - это высококачественный инструмент для торговли, который использует отклонения, образующиеся между относительно сильным и слабым индексом (RSI) и ценой, чтобы предоставить трейдерам высоковероятные сигналы покупки и продажи. Эта стратегия оптимизирована специально для 30-минутных временных рамок, чтобы эффективно идентифицировать рыночные переломы с помощью точно рассчитанных уровней входа и выхода RSI в сочетании с сильными и медленными отклонениями.
RSI отклоняется от стратегии, основанной на взаимодействии двух ключевых технических показателей:
Относительно сильный индекс ((RSI) уровень перекупа/перепродажиПолитика: позволяет пользователю настраивать входные и выходные уровни RSI. По умолчанию уровень входа для многоголовых составляет 35.0, уровень входа для пустых голов - 76.0, уровень выхода для многоголовых - 80.0, уровень выхода для пустых голов - 54.1. Эти уровни, полученные в результате многолетнего опыта тестирования, оптимизированы для 30-минутных временных рамок.
RSI отклоняется от сигналаВ этой статье мы рассмотрим два типа отступничества:
Логика выполнения стратегии следующая:
Система распознает отклонения, воспроизводя 5 столбцов данных, и автоматически генерирует торговый сигнал при выполнении условий, значительно снижая потребность в ручном анализе.
Фильтрация высокоточного сигналаПовышение успешности сделок: эффективное отфильтрование слабых сигналов путем сочетания уровней RSI и отклонения цены, запуска сделок только в высоковероятных переломных точках.
Сильная настройкаТрейдеры могут корректировать входные и выходные уровни RSI в зависимости от особенностей различных рынков и временных рамок, оптимизируя эффективность стратегии. Такая гибкость позволяет использовать его для различных типов торговли и временных периодов.
Интуитивная визуальная помощьНапример, в “Стратегии” есть много визуальных элементов, включая:
Потенциал автоматизированной торговли: поддержка интеграции с внешними торговыми платформами с помощью функций Webhook в TradingView, автоматическое исполнение сделок, уменьшение человеческого вмешательства и эмоционального воздействия.
Открытое и прозрачноеКод стратегии полностью открыт, что позволяет трейдерам глубже понять, как он работает, и модифицировать и оптимизировать его в соответствии с их собственными потребностями.
Риск рыночных тенденций: Стратегия хорошо справляется с определением переломных точек, но может создавать ошибочные сигналы на рынках с сильным трендом. Надежность многоголовых сигналов значительно снижается, особенно в условиях сильной нисходящей тенденции или медвежьего рынка.
Параметр ЧувствительностьНастройки входных и выходных уровней RSI оказывают существенное влияние на стратегическую эффективность. Неправильная настройка параметров может привести к чрезмерному количеству сделок или упущенным важным возможностям. Решение заключается в том, чтобы оптимизировать параметры для конкретных рынков и временных рамок путем обратной связи.
Риск просрочкиВ результате использования отстающих индикаторов (RSI) и необходимости ожидать отклонения от формирования, может возникнуть нежелательная точка входа, особенно в условиях резкой волатильности рынка.
Риск ложного проникновенияРынок может формировать ложные отклонения от сигнала, что приводит к ошибочным сделкам. Рекомендуется использовать в сочетании с другими техническими показателями или более высокими временными рамками для подтверждения сигнала.
Влияние комиссий и скольжения: Стратегия по умолчанию устанавливает комиссию в размере 0,1%, но комиссионные и скольжение в реальных сделках могут отличаться от установленных значений, что влияет на разницу между фактическими результатами обратной проверки и реальными операциями.
Интеграция многовременного анализа: расширяет стратегию на систему анализа с несколькими временными рамками, выполняя сделки только в том случае, если направление тренда в более высоких временных рамках совпадает с сигналом отклонения. Например, многоголовые сделки выполняются только в том случае, если на дневном графике показана восходящая тенденция, а на 30-минутном графике наблюдается отклонение быка.
Повышение объема транзакций: увеличение механизма подтверждения объема сделки при формировании отклонения от сигнала, повышение надежности сигнала. Например, можно проверить, является ли объем сделки при формировании отклонения от отклонения или подтверждения.
Приспособность RSI параметровРазработка адаптивных алгоритмов, которые автоматически корректируют уровень входа и выхода RSI в зависимости от волатильности рынка, чтобы адаптироваться к различным рыночным условиям.
Оптимизация механизма сдерживания убытковВ настоящее время существуют стратегии выхода из торговли только на уровне RSI, которые могут быть дополнены ценовым стоп-лоском, ограничивающим максимальные потери в одной сделке.
Увеличение рыночных фильтровИнтеграция с индикаторами, идентифицирующими тенденции, такими как движущиеся средние или ADX, совершение торговли только в определенном направлении в соответствующих рыночных условиях, избегая обратной торговли.
Оптимизация машинного обучения: используя алгоритмы машинного обучения для анализа исторических данных, автоматически идентифицируйте оптимальные параметры RSI и отклонения от подтверждающих условий, чтобы улучшить эффективность стратегии.
RSI Trend Deviation Strategy Indicator является мощным количественным торговым инструментом, который эффективно идентифицирует рыночные переломные моменты путем сочетания RSI и ценового отклонения. Наиболее заметным преимуществом стратегии является ее высокая настраиваемость и интуитивная визуальная помощь, позволяющая трейдерам оптимизировать торговые решения в зависимости от различных рыночных условий.
Ключевая ценность стратегии заключается в ее способности фильтровать сигналы, что значительно повышает качество торговых сигналов, запуская сделки только в том случае, если RSI находится на определенном уровне и в то же время наблюдается отклонение цены. Однако пользователям необходимо обращать внимание на риск и чувствительность к параметрам рыночных тенденций и находить оптимальные параметры для конкретных рынков и временных рамок с помощью обратной связи.
Эта стратегия имеет потенциал для дальнейшего повышения ее производительности и адаптации с помощью оптимизации, таких как многократный анализ временных рамок, подтверждение объемов сделок, самостоятельно адаптируемые параметры и усиленные механизмы управления рисками. Для трейдеров, которые ищут количественные торговые стратегии, основанные на технических показателях, это инструмент, который стоит глубокого изучения и применения.
/*backtest
start: 2024-06-13 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy(title="RSI Divergence Strategy", shorttitle="RSI Divergence Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, initial_capital=100000, currency=currency.USD, process_orders_on_close=false)
// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(true, title="Calculate Divergence", group="RSI Settings", tooltip="Required for divergence signals")
// Added RSI Level Inputs
longEntryLevel = input.float(35.0, "Long Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortEntryLevel = input.float(76.0, "Short Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
longExitLevel = input.float(80.0, "Long Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortExitLevel = input.float(54.1, "Short Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Divergence Parameters
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
var bool plFound = false
var bool phFound = false
var bool bullCond = false
var bool bearCond = false
// Global variables to store _inRange results
var bool inRangePlFound = false
var bool inRangePhFound = false
rsiLBR = rsi[lookbackRight]
// Update _inRange results on every bar
inRangePlFound := _inRange(plFound[1])
inRangePhFound := _inRange(phFound[1])
if calculateDivergence
// Regular Bullish Divergence
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangePlFound
lowLBR = low[lookbackRight]
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
// Regular Bearish Divergence
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangePhFound
highLBR = high[lookbackRight]
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
// Strategy Entries with customizable RSI levels
if bullCond and rsi < longEntryLevel
strategy.entry("Long", strategy.long)
if bearCond and rsi > shortEntryLevel
strategy.entry("Short", strategy.short)
// Strategy Exits with customizable RSI levels
if rsi >= longExitLevel
strategy.close("Long")
if rsi <= shortExitLevel
strategy.close("Short")
// ———————— Visualizations ———————— //
// Plot RSI line
rsiColor = rsi > 70 ? color.new(#ff5252, 0) : rsi < 30 ? color.new(#4bf335, 0) : color.new(#b8b8b8, 0)
plot(rsi, title="RSI", color=rsiColor, linewidth=2, style=plot.style_line)
// Plot horizontal levels
hline(longEntryLevel, "Long Entry", color=color.new(#4bf335, 0), linestyle=hline.style_solid)
hline(shortEntryLevel, "Short Entry", color=color.new(#ed1404, 0), linestyle=hline.style_solid)
hline(longExitLevel, "Long Exit", color=color.new(#4bf335, 0), linestyle=hline.style_dashed)
hline(shortExitLevel, "Short Exit", color=color.new(#ed1404, 0), linestyle=hline.style_dashed)
// Plot traditional levels
ob = 70
os = 30
hline(ob, "Overbought", color=color.new(#ff5252, 70), linestyle=hline.style_dotted)
hline(os, "Oversold", color=color.new(#4bf335, 70), linestyle=hline.style_dotted)
// Background colors
bgcolor(rsi >= ob ? color.new(#ff5252, 90) : na)
bgcolor(rsi <= os ? color.new(#4bf335, 90) : na)
bgcolor(rsi > os and rsi < ob ? color.new(#424242, 95) : na)
// ———————— DIVERGENCE VISUALS ———————— //
// Position labels below RSI for bullish, above for bearish
bullLabelY = math.max(0, rsi[lookbackRight] - 15) // Position below RSI line
bearLabelY = math.min(100, rsi[lookbackRight] + 15) // Position above RSI line
// CORRECTED: Pass y-coordinate as first argument for absolute positioning
plotshape(bullCond ? bullLabelY : na, title="Bullish Divergence", text="BULL", style=shape.labelup,
location=location.absolute, color=color.new(#4bf335, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)
plotshape(bearCond ? bearLabelY : na, title="Bearish Divergence", text="BEAR", style=shape.labeldown,
location=location.absolute, color=color.new(#ed1404, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)