
Стратегия торговли на фоне RSI и случайного RSI - это метод высокотехнологичного анализа, разработанный специально для идентификации ключевых переломов на рынке. Стратегия объединяет силу относительно сильных (RSI) и случайных (SRSI) показателей, чтобы прогнозировать потенциальные изменения тенденции, отслеживая обратное соотношение между ценой и этими динамическими показателями. Кроме того, стратегия включает в себя индикаторные движущиеся средние (EMA) в качестве фильтра на тенденции и применяет фильтр с точным колебательным расстоянием, который гарантирует захват значимых изменений в структуре рынка, а не рыночного шума.
Ключевые принципы стратегии основаны на концепции отклонения в техническом анализе. Отклонения, которые происходят, когда движение цены не соответствует движению технических показателей, обычно указывают на то, что текущая тенденция может скоро измениться. Стратегия фокусируется на четырех типах отклонений:
Эта стратегия использует строгие условия фильтрации, чтобы гарантировать качество отклонений:
При обнаружении отклонений стратегия наносит на график ярлыки и соединительные линии, что позволяет трейдерам визуально идентифицировать эти ключевые сигналы. Кроме того, стратегия автоматически генерирует входные сигналы о повышении и понижении на основе отклонений.
Чтобы снизить эти риски, рекомендуется:
Стратегия торговли с отклонением от RSI и случайного RSI - это сложный и мощный инструмент технического анализа, способный улавливать потенциальные сигналы об обратном движении рынка и продолжении тенденции путем идентификации несоответствия между ценовыми и динамическими показателями. Стратегия предоставляет комплексный способ идентификации высоковероятных торговых возможностей путем интеграции обычного и скрытого обнаружения отклонений и применения тщательно разработанных фильтров.
Однако, как и все методы технического анализа, эта стратегия также имеет свои ограничения и риски. С помощью оптимизации рекомендаций, таких как добавление механизмов управления рисками, улучшение подтверждения сигналов и интеграция динамических параметров, можно значительно повысить устойчивость и производительность стратегии.
В конечном счете, эта стратегия лучше всего подходит как часть более широкой торговой системы в сочетании с другими аналитическими инструментами и надлежащими принципами управления капиталом. Для трейдеров, которые понимают технический анализ и структуру рынка, такая отклонение от стратегии может стать ценным инструментом для обнаружения высококачественных торговых установок.
/*backtest
start: 2024-06-26 00:00:00
end: 2025-06-24 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("RSI Divergence Strategy", overlay=true)
//strategy("RSI & SRSI Divergence Strategy with EMA & Min Swing Filter + Price Chart Lines", overlay=true)
rsiLength = input.int(14, title="RSI Length")
srsiLength = input.int(14, title="Stochastic RSI Length")
kLength = input.int(3, title="%K Length")
dLength = input.int(3, title="%D Length")
emaLength = input.int(200, title="EMA Length")
lookback = input.int(40, title="Lookback Period for Divergence")
minSwingDistPercent = input.float(1.5, title="Minimum Swing Distance (%)")
minPriceMovePercent = input.float(0.5, title="Minimum Price Move from Last Swing (%)")
rsi = ta.rsi(close, rsiLength)
srsi = ta.stoch(rsi, rsi, rsi, srsiLength)
k = ta.sma(srsi, kLength)
d = ta.sma(k, dLength)
ema200 = ta.ema(close, emaLength)
// === Bullish Regular Divergence ===
var float lastLowPrice = na
var float lastLowRsi = na
var float lastLowSrsi = na
var int lastLowIndex = na
bullishDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLow = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLow >= minSwingDistPercent and priceMoveLow >= minPriceMovePercent
if (low < lastLowPrice and rsi > lastLowRsi) or (low < lastLowPrice and k > lastLowSrsi)
bullishDiv := true
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
else
lastLowPrice := low
lastLowRsi := rsi
lastLowSrsi := k
lastLowIndex := bar_index
// === Bearish Regular Divergence ===
var float lastHighPrice = na
var float lastHighRsi = na
var float lastHighSrsi = na
var int lastHighIndex = na
bearishDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHigh = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHigh >= minSwingDistPercent and priceMoveHigh >= minPriceMovePercent
if (high > lastHighPrice and rsi < lastHighRsi) or (high > lastHighPrice and k < lastHighSrsi)
bearishDiv := true
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
else
lastHighPrice := high
lastHighRsi := rsi
lastHighSrsi := k
lastHighIndex := bar_index
// === Bullish Hidden Divergence ===
bullishHiddenDiv = false
if ta.lowestbars(low, lookback) == 0
if not na(lastLowPrice) and not na(lastLowRsi) and not na(lastLowSrsi)
swingDistLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
priceMoveLowHidden = math.abs(low - lastLowPrice) / lastLowPrice * 100
if swingDistLowHidden >= minSwingDistPercent and priceMoveLowHidden >= minPriceMovePercent
if (low > lastLowPrice and rsi < lastLowRsi) or (low > lastLowPrice and k < lastLowSrsi)
bullishHiddenDiv := true
// === Bearish Hidden Divergence ===
bearishHiddenDiv = false
if ta.highestbars(high, lookback) == 0
if not na(lastHighPrice) and not na(lastHighRsi) and not na(lastHighSrsi)
swingDistHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
priceMoveHighHidden = math.abs(high - lastHighPrice) / lastHighPrice * 100
if swingDistHighHidden >= minSwingDistPercent and priceMoveHighHidden >= minPriceMovePercent
if (high < lastHighPrice and rsi > lastHighRsi) or (high < lastHighPrice and k > lastHighSrsi)
bearishHiddenDiv := true
// === PLOTS ===
plot(ema200, title="EMA 200", color=color.purple, linewidth=2)
// === STRATEGY ENTRIES ===
if bullishDiv or bullishHiddenDiv
strategy.entry("Long", strategy.long)
if bearishDiv or bearishHiddenDiv
strategy.entry("Short", strategy.short)