Индикатор RSI и стратегия пересечения скользящих средних


Дата создания: 2023-12-21 11:30:27 Последнее изменение: 2023-12-21 11:30:27
Копировать: 0 Количество просмотров: 762
1
Подписаться
1621
Подписчики

Индикатор RSI и стратегия пересечения скользящих средних

Обзор

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

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

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

  2. Вычислите скользящую среднюю MA для RSI. Используйте скользящую среднюю EMA или просто скользящую среднюю SMA.

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

  4. Когда RSI выше линейки перекупа, считается, что ценная бумага перекупила, и делается дисконт; когда RSI ниже линейки перепродажи, считается, что ценная бумага перепродается, и делается лишний.

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

  1. В сочетании с пересечением показателей и средних показателей, чтобы избежать зависимости от одного показателя, повышается точность принятия решений.

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

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

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

  1. Индекс RSI может дать ошибочный сигнал в шокирующих ситуациях.

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

  3. Система равнолинейных колебаний слишком чувствительна к краткосрочным аномальным колебаниям и может быть зафиксирована в стоп-паре.

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

  1. Настройка параметров RSI для поиска оптимальных параметров длины.

  2. Оптимизация параметров скользящих средних для поиска оптимального среднелинейного периода.

  3. Проверка различных параметров линий перекупа и перепродажи, оптимизация возможностей создания позиций.

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

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

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

Исходный код стратегии
/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//dfurrer45
strategy(title="Relative Strength Index", shorttitle="RSI", overlay=true)
src = close, len = input(13, minval=1, title="Length"), maLen = input(9, minval=1, title="MA Lenght"), exponential = input(false, title="Exponential")

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)
// ===  BACKTEST END  ===
backtestdaterange = (time > timestamp(FromYear, FromMonth, FromDay, 00, 00))

rsioverbought = input(90, minval=1, title="RSI % start overbought")
rsioversold = input(10, minval=1, title="RSI % start oversold")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
ma = exponential ? ema(rsi, maLen) : sma(rsi, maLen)
rsimacrossup = cross(rsi,ma) and rsi > ma
rsimacrossdown = cross(rsi,ma) and rsi < ma
plotchar(rsimacrossup, char='⇧', location = location.belowbar, color = green, text = "", textcolor = green, size=size.small)
plotchar(rsimacrossdown, char='⇩', location = location.abovebar, color = red, text = "", textcolor = red, size=size.small)
plotchar(rsi > rsioverbought, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)
plotchar(rsi < rsioversold, char='x', location = location.belowbar, color = aqua, text = "", textcolor = red, size=size.small)


closetrade = rsimacrossup or rsimacrossdown
strategy.close_all(closetrade)
strategy.close_all((rsi > rsioverbought) or (rsi < rsioversold))
strategy.entry("Short Overbought",strategy.short, when=(rsi > rsioverbought) and backtestdaterange)
strategy.entry("Buy Overbought",strategy.long, when=(rsi < rsioversold) and backtestdaterange)
strategy.entry("Long Cross", strategy.long, when=rsimacrossup and backtestdaterange)
strategy.entry("Short Cross", strategy.short, when=rsimacrossdown and backtestdaterange)