Стратегия RSI для отмены импульса

Автор:Чао Чжан, Дата: 2023-11-15 16:29:25
Тэги:

img

Обзор

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

Объяснение стратегии

Логика

Во-первых, индикатор RSI рассчитывается на основе цены закрытия с периодом, установленным на 7. Уровень перекупа устанавливается на 70 и уровень перепродажи устанавливается на 30. Сигналы покупки генерируются, когда RSI пересекает 30 и сигналы продажи генерируются, когда RSI пересекает 70.

Чтобы отфильтровать ложные сигналы, размер тела свечи должен расшириться до 1-3 раз от нормального диапазона при запуске торгового сигнала.

Когда RSI остается ниже 30 в течение 5 последовательных бар, генерируется длинный сигнал. Если следующая свеча показывает бычье тело, расширенное более чем в 4 раза, будет выполнена длинная позиция. Когда RSI остается выше 70 в течение 5 последовательных бар, генерируется короткий сигнал. Если следующая свеча показывает медвежье тело, расширенное более чем в 4 раза, будет выполнена короткая позиция.

Чтобы зафиксировать прибыль, позиции будут закрыты, когда текущее направление свечи соответствует направлению позиции и тело расширяется в 2 раза.

Преимущества

  1. Зафиксирование среднего отклонения после экстремальных уровней

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

  1. Фильтрация свечей уменьшает ложные сигналы

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

  1. Последовательные полоски RSI повышают надежность

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

  1. Гибкий мультипликатор расширения тела

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

Риски

  1. Потенциальная переподготовка

Установка параметров имеет некоторые врожденные ограничения. Различные продукты и временные периоды могут потребовать настройки параметров. Использование фиксированных настроек может привести к проблемам с перенастройкой.

  1. Низкая точность определения поворотов

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

  1. Потенциально длительный период хранения на различных рынках

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

  1. Нужны правильные стратегии размещения позиций

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

Идеи улучшения

  1. Испытать различные наборы параметров

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

  1. Добавить стоп-лосс и взять прибыль

Движение или процент стоп-лосса можно добавить для блокировки прибыли. или установить стоп-лосс на основе значений ATR или каналов Donchain и т.д.

  1. Комбинировать другие показатели в качестве фильтров

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

  1. Добавить тенденционный уклон

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

Заключение

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


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0)

//Settings
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
sps = 0
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2038, defval = 2018, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4
dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4
exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    sps := 1

if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()
    sps := 0
    

Больше