Стратегия торговли на основе дивергенции RSI и Stochastic RSI

RSI SRSI EMA 背离 摆动过滤器 价格图表线
Дата создания: 2025-06-26 09:28:12 Последнее изменение: 2025-06-26 09:28:12
Копировать: 0 Количество просмотров: 281
2
Подписаться
319
Подписчики

Стратегия торговли на основе дивергенции RSI и Stochastic RSI Стратегия торговли на основе дивергенции RSI и Stochastic RSI

Обзор

Стратегия торговли на фоне RSI и случайного RSI - это метод высокотехнологичного анализа, разработанный специально для идентификации ключевых переломов на рынке. Стратегия объединяет силу относительно сильных (RSI) и случайных (SRSI) показателей, чтобы прогнозировать потенциальные изменения тенденции, отслеживая обратное соотношение между ценой и этими динамическими показателями. Кроме того, стратегия включает в себя индикаторные движущиеся средние (EMA) в качестве фильтра на тенденции и применяет фильтр с точным колебательным расстоянием, который гарантирует захват значимых изменений в структуре рынка, а не рыночного шума.

Стратегический принцип

Ключевые принципы стратегии основаны на концепции отклонения в техническом анализе. Отклонения, которые происходят, когда движение цены не соответствует движению технических показателей, обычно указывают на то, что текущая тенденция может скоро измениться. Стратегия фокусируется на четырех типах отклонений:

  1. Обычная прогулкаКогда цены инновационно низки, но RSI или SRSI не могут инновационно низко, это указывает на то, что нисходящая динамика ослабевает, что может предвещать начало восходящей тенденции.
  2. В отличие от обычного паденияКогда цены вновь становятся высокими, но RSI или SRSI не вновь становятся высокими, это указывает на то, что восходящая волатильность ослабевает, что может предвещать начало нисходящей тенденции.
  3. Спрятанный смотритель отступил: Когда цена выше предыдущего минимума, но RSI или SRSI ниже предыдущего минимума. Это обычно указывает на отклонение в восходящем тренде, что указывает на продолжение основной восходящей тенденции.
  4. Скрытый спад: Когда цена ниже предыдущего максимума, но RSI или SRSI выше предыдущего максимума. Это обычно указывает на откат в нисходящем тренде, что говорит о том, что основная нисходящая тенденция продолжится.

Эта стратегия использует строгие условия фильтрации, чтобы гарантировать качество отклонений:

  • Используйте период обратной связи (по умолчанию 40 циклов) для поиска заметных колебаний
  • Требуется минимальное колебание от процента (по умолчанию 1.5%) для фильтрации незначительных колебаний
  • Процентное изменение минимальной цены, требуемой с последней точкой колебания (по умолчанию 0,5%)

При обнаружении отклонений стратегия наносит на график ярлыки и соединительные линии, что позволяет трейдерам визуально идентифицировать эти ключевые сигналы. Кроме того, стратегия автоматически генерирует входные сигналы о повышении и понижении на основе отклонений.

Стратегические преимущества

  1. Многоуровневое подтверждениеВ сочетании с RSI и случайным RSI обеспечивается двойная подтверждение, снижает вероятность ложного сигнала. Сигнал более надежен, когда оба показателя показывают отклонение.
  2. Всеобщая проверка отклоненийЭта стратегия не только обнаруживает обычные отклонения (предсказывает обратный тренд), но и скрытые отклонения (предсказывает продолжение тренда), предоставляя трейдерам полный рыночный взгляд.
  3. Визуализация: позволяет трейдерам легче распознавать и понимать сигналы путем визуального отклонения от знаков на графике, включая этикетки и соединительные линии.
  4. Высокая степень адаптации: параметры стратегии, такие как период обратного отсчета, минимальное расстояние колебаний и минимальное изменение цены, могут быть изменены, что позволяет трейдерам оптимизировать стратегию в зависимости от различных рыночных условий и временных рамок.
  5. Фильтры снижают шумПрименение минимального колебания расстояния и ценовых изменений эффективно фильтрует рыночный шум, сосредоточиваясь на значимых изменениях в ценовой структуре.
  6. Тенденции и контекстВключение в 200-ю EMA дает более широкий контекст тренда, помогая трейдерам понять, где отклонение от сигнала находится в общей тенденции рынка.

Стратегический риск

  1. Ложное отступничествоДаже при наличии фильтров, рынок может создавать ложные отклонения, особенно в условиях высокой волатильности или скоординированных рынков. Это может привести к ошибочным торговым решениям и потенциальным потерям.
  2. ЗадержкаСигналы отклонения обычно формируются после того, как цена уже начала переворачиваться, что может привести к нежелательной точке входа, особенно в быстро меняющихся рынках.
  3. Параметр Чувствительность: эффективность стратегии сильно зависит от параметров, таких как период отсчета и минимальное расстояние колебания. Неправильные параметры могут привести к слишком большому количеству или недостаточному количеству сигналов.
  4. Ограничение показателейRSI и SRSI, как динамические индикаторы, могут быть недостаточно надежными в определенных рыночных условиях, особенно в условиях долгосрочного трендового рынка или крайней волатильности.
  5. Отсутствие механизмов сдерживанияВ то же время, по мнению экспертов, существующая стратегия не включает в себя четкую стратегию стоп-лосса, что увеличивает потенциальный риск падения.

Чтобы снизить эти риски, рекомендуется:

  • Использование отклонения от сигнала в сочетании с другими техническими показателями или методами анализа, такими как уровни поддержки/сопротивления, падений формы или анализа количества сделок
  • Настройка параметров для тестирования и оптимизации в различных рыночных условиях
  • Применение надлежащей стратегии управления капиталом и устранения убытков
  • Рассмотрение значения отклонения от сигнала в контексте общей тенденции рынка

Направление оптимизации стратегии

  1. Интегрированные механизмы остановки и остановкиПрименение динамических стопов, основанных на ATR (средний реальный диапазон), или фиксированных стопов, основанных на ключевых уровнях поддержки/сопротивления, может значительно повысить риск-вознаграждение стратегии. Точно так же, применение стоп-регулов, основанных на ценовых целях или времени, может блокировать прибыль.
  2. Добавить фильтр трендаХотя стратегия уже включает в себя EMA в качестве отсчета, она не используется для фильтрации торгов. Можно добавить условия, например, рассматривать отклонение от позиции только тогда, когда цена выше 200-дневной EMA, или рассматривать отклонение от позиции только тогда, когда цена ниже 200-дневной EMA, что помогает оставаться в соответствии с основной тенденцией.
  3. Механизм подтверждения сигналаВведение дополнительных подтверждающих показателей, таких как увеличение объема передачи, перекрестные подтверждения формы обрушения или другие динамические показатели, может повысить надежность сигнала.
  4. Изменение динамических параметров: реализация механизма автоматической корректировки задним числом и колебаниями от отклонений на основе рыночной волатильности. Например, использование более крупных отклонений в высоко волатильных рынках и использование меньших отклонений в низко волатильных рынках.
  5. Отступление от рейтингаРазработка системы оценки “силы” отклонения, основанной на величине отклонения между ценой и показателем, длительности времени формирования отклонения и других соответствующих факторах. Это может помочь трейдеру уделять первоочередное внимание более сильным сигналам.
  6. Анализ многовременных рамокИнтеграция подтверждения с несколькими временными рамками, например, принимая во внимание сигнал только тогда, когда более высокие временные рамки также показывают отклонение в том же направлении, что позволяет уменьшить ложный сигнал.
  7. Улучшение определения колебаний цен: текущая стратегия использует простое обнаружение высоких/низких точек. Достижение более сложного анализа ценовой структуры (например, рассмотрение последовательности нескольких точек колебания) может повысить точность обнаружения отклонений.
  8. Адаптация к рыночной средеДобавление функций классификации рыночной среды (например, тенденции, диапазон или высокая волатильность) и корректировка стратегического поведения в соответствии с обнаруженной средой.

Подвести итог

Стратегия торговли с отклонением от 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)