Стратегия двухстороннего прорыва RSI


Дата создания: 2023-11-08 12:11:03 Последнее изменение: 2023-11-08 12:11:03
Копировать: 0 Количество просмотров: 669
1
Подписаться
1617
Подписчики

Стратегия двухстороннего прорыва RSI

Обзор

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

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

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

  2. Определяя, находимся ли мы в зоне сверхпокупа или сверхпродажи, следует учитывать, что на кривой RSI соотношение между линией сверхпокупа и линией сверхпродажи.

  3. Когда индикатор RSI пробивает соответствующую пониженную линию, он открывает позицию в противоположном направлении. Например, когда RSI пробивает линию сверхпокупа, он открывает позицию сверхпокупа, считая, что ситуация изменилась.

  4. После открытия позиции, устанавливается стоп-стоп-линия. Следить за состоянием стоп-стоп-линия и при выполнении условий проводить плавание.

  5. Эта стратегия также предлагает возможность использовать EMA в качестве фильтра. Для открытия позиции цена должна пробиться через EMA только в том случае, если RSI сделает дополнительный сигнал о закрытии.

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

Анализ преимуществ

  • Лучше использовать классический прорывный принцип RSI.
  • Гибкость в установке предела перекупки и перепродажи, адаптируемая для различных сортов.
  • Можно выбрать, будет ли использоваться EMA-фильтровый сигнал, чтобы избежать частого открытия позиций из-за небольших колебаний.
  • Поддержка функции Stop Loss Stop для повышения стабильности стратегии.
  • Поддержка определения конкретных торговых периодов, чтобы избежать нежелательных торговых периодов.
  • Поддерживает более двойную торговлю, чтобы максимально использовать двойные колебания.

Анализ рисков

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

Решение риска:

  • Оптимизация параметров RSI, адаптация параметров для различных сортов.
  • В сочетании с другими трендовыми показателями, чтобы избежать ошибочных сигналов.
  • Тестирование и оптимизация параметров стоп-стоп для обнаружения оптимальных параметров.
  • Тестирование и оптимизация параметров EMA, чтобы найти оптимальный уровень фильтрации.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизируйте RSI, чтобы найти оптимальную комбинацию параметров различных разновидностей. Вы можете найти оптимальный предел перекупа и перепродажи, пройдя через отсчет.

  2. Попробуйте заменить или объединить RSI с другими индикаторами, чтобы получить более сильный сигнал для оценки. Например, MACD, KD, BRI и т. Д.

  3. Оптимизация стратегии стоп-стоп, повышение стабильности стратегии. Можно установить плавающий стоп в зависимости от рыночной волатильности, или с функцией отслеживания стоп-стоп.

  4. Оптимизируйте параметры фильтра EMA или тестируйте другие индикаторы фильтра, чтобы избежать дополнительного зацепления.

  5. Добавить модуль для определения тенденций, чтобы избежать обратного многоголового поведения или обратного многоголового поведения.

  6. Тестирование параметров различных периодов торговли, чтобы определить, какие периоды подходят для стратегии, а какие следует избегать.

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

Общая концепция двухсторонней стратегии прорыва RSI ясна, она использует классический принцип RSI оперебойного перепродажи для обратного трейдинга. Можно использовать как возможности для обратного обращения в зоне оперебойного перепродажи, так и контролировать риск с помощью фильтрации EMA и стоп-стоп. Большое пространство для оптимизации параметров и оптимизации модулей позволяет создать более стабильную и надежную стратегию обратного обращения.

Исходный код стратегии
/*backtest
start: 2023-10-08 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © REV0LUTI0N

//@version=4

strategy("RSI Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// Strategy Backtesting
startDate  = input(timestamp("2021-10-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("9999-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true
// Strategy

Length = input(12, minval=1)
src = input(close, title="Source")
overbought = input(70, minval=1)
oversold = input(30, minval=1)
xRSI = rsi(src, Length)
    
rsinormal = input(true, title="Overbought Go Long & Oversold Go Short")
rsiflipped = input(false, title="Overbought Go Short & Oversold Go Long")

// EMA Filter
noemafilter = input(true, title="No EMA Filter")
useemafilter = input(false, title="Use EMA Filter")
ema_length = input(defval=15, minval=1, title="EMA Length")
emasrc = input(close, title="Source")
ema = ema(emasrc, ema_length)
plot(ema, "EMA", style=plot.style_linebr, color=#cad850, linewidth=2)

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit % Based
enablesl = input(false, title='Enable Stop Loss')
enabletp = input(false, title='Enable Take Profit')
stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100
takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100

longStop = strategy.position_avg_price * (1 - stopTick)
shortStop = strategy.position_avg_price * (1 + stopTick)
shortTake = strategy.position_avg_price * (1 - takeTick)
longTake = strategy.position_avg_price * (1 + takeTick)

plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")

// Strategy Execution
if (xRSI > overbought and close > ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and close < ema and time_cond and timetobuy and rsinormal and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and close > ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and close < ema and time_cond and timetobuy and rsiflipped and useemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI > overbought and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI < oversold and time_cond and timetobuy and rsinormal and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if (xRSI < oversold and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Long", strategy.long, alert_message = message_enterlong)
    
if (xRSI > overbought and time_cond and timetobuy and rsiflipped and noemafilter)
    strategy.entry("Short", strategy.short, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesl and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enablesl and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)
    
if strategy.position_size > 0 and enabletp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong)
if strategy.position_size < 0 and enabletp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)