Количественная торговая стратегия на основе RSI


Дата создания: 2023-12-06 17:17:16 Последнее изменение: 2023-12-06 17:17:16
Копировать: 0 Количество просмотров: 543
1
Подписаться
1619
Подписчики

Количественная торговая стратегия на основе RSI

Обзор

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

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

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

После входа в сигнал стратегия устанавливает стоп-стоп-стоп. Стоп-стоп по умолчанию в 0,9 раза выше входной цены, стоп-стоп по умолчанию в 3% выше входной цены. В то же время, при повторном появлении обратного сигнала, текущая позиция будет уравнена.

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

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

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

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

Оптимизация стратегии

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

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

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

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

//@version=2
strategy(title="Relative Strength Index", shorttitle="RSI")
slen    = input(55, title="Short length")
llen    = input(126, title="Long length")
sup     = ema(max(change(close), 0), slen)
sdown   = ema(-min(change(close), 0), slen)
rsi1    = sdown == 0 ? 100 : sup == 0 ? 0 : 100 - (100 / (1 + sup / sdown))
lup     = ema(max(change(close), 0), llen)
ldown   = ema(-min(change(close), 0), llen)
rsi2    = ldown == 0 ? 100 : lup == 0 ? 0 : 100 - (100 / (1 + lup / ldown))
ob      = input(55, title="Overbought")
os      = input(45, title="Oversold")
tp      = input(.9, title="Take profit level %")*.01
sl      = input(3, title="Stoploss level %")*.01
mid     = avg(ob,os)
plot    (mid, color=#4f4f4f, transp=0)
hline   (ob, color=#4f4f4f)
hline   (os, color=#4f4f4f)
long    = crossover(rsi1,rsi2)
short   = crossunder(rsi1,rsi2)
vall    = valuewhen(long,close,0)
lexit1  = high>=(vall*tp)+vall
lexit2  = low<=vall-(vall*sl)
vals    = valuewhen(short,close,0)
sexit1  = low<=vals - (vals*tp)
sexit2  = high>=vals + (vals*sl)
bgcolor (color=long?lime:na,transp=50)
bgcolor (color=short?red:na, transp=50)
strategy.entry("Long", strategy.long, when=long)
strategy.close("Long", when=lexit1)
strategy.close("Long", when=lexit2)
strategy.close("Long", when=short)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Short", when=sexit1)
strategy.close("Short", when=sexit2)
strategy.close("Short", when=long)
plot    (rsi1, color=orange, transp=0,linewidth=1, title="Short period RSI")
plot    (rsi2, color=aqua  , transp=0,linewidth=1, title="Long period RSI")