Это краткосрочная торговая стратегия, основанная на индикаторе относительной силы (RSI). Она использует RSI для выявления уровней перекупленности и перепродажи и сочетает в себе фильтрацию свечей, чтобы избежать ложных сигналов, вводя длинные и короткие позиции в точки переворота. Стратегия направлена на захват средних возможностей реверсии после экстремальных условий перекупленности или перепродажи.
Во-первых, индикатор RSI рассчитывается на основе цены закрытия с периодом, установленным на 7. Уровень перекупа устанавливается на 70 и уровень перепродажи устанавливается на 30. Сигналы покупки генерируются, когда RSI пересекает 30 и сигналы продажи генерируются, когда RSI пересекает 70.
Чтобы отфильтровать ложные сигналы, размер тела свечи должен расшириться до 1-3 раз от нормального диапазона при запуске торгового сигнала.
Когда RSI остается ниже 30 в течение 5 последовательных бар, генерируется длинный сигнал. Если следующая свеча показывает бычье тело, расширенное более чем в 4 раза, будет выполнена длинная позиция. Когда RSI остается выше 70 в течение 5 последовательных бар, генерируется короткий сигнал. Если следующая свеча показывает медвежье тело, расширенное более чем в 4 раза, будет выполнена короткая позиция.
Чтобы зафиксировать прибыль, позиции будут закрыты, когда текущее направление свечи соответствует направлению позиции и тело расширяется в 2 раза.
RSI хорошо распознает условия перекупки и перепродажи. Когда акции достигают экстремальных уровней, существует высокая вероятность отката, и экстремальные уровни часто подразумевают надвигающееся изменение. Эта стратегия способна использовать такие возможности в переломных моментах.
Эта стратегия включает в себя расширение тела свечи в качестве фильтра, вводя позиции, когда увеличенное тело появляется вокруг точек переворота, избегая ударов от хаотичных рынков.
Требование 1-5 последовательных RSI-бар в зоне перекупленности или перепроданности служит подтверждением, избегая ложных сигналов от случайных аберрантных бар и улучшая надежность сигнала.
Для акций с большими колебаниями критерии могут быть ослаблены, в то время как для акций с узкими диапазонами он может быть ужесточен. Это позволяет гибко корректировать для разных торговых продуктов.
Установка параметров имеет некоторые врожденные ограничения. Различные продукты и временные периоды могут потребовать настройки параметров. Использование фиксированных настроек может привести к проблемам с перенастройкой.
В сочетании с расширением тела, позиции выходят преждевременно, поэтому точность определения точных дна или вершин обычно не очень высока.
На рыночных диапазонах RSI может вызывать частые сигналы купли и продажи, что приводит к длительным периодам хранения.
В качестве краткосрочной стратегии торговли следует комбинировать соответствующие стратегии размещения позиций, такие как перемещение стоп-лосса, получение прибыли и т. д., чтобы зафиксировать прибыль и контролировать риски.
Различные комбинации параметров RSI могут быть протестированы, такие как период, уровни перекупа/перепродажи и фильтры свечей, чтобы найти оптимизированные параметры для разных продуктов.
Движение или процент стоп-лосса можно добавить для блокировки прибыли. или установить стоп-лосс на основе значений ATR или каналов Donchain и т.д.
Условия, основанные на MACD, KDJ и других показателях, могут быть добавлены, чтобы избежать ошибочных сигналов от недействительных прорывов.
Используйте скользящие средние для измерения тенденционного уклонения. Рассмотрите только торговые сигналы, которые соответствуют тренду. Стратегия может быть приостановлена во время рынков с диапазоном. Индикаторы силы тренда также могут использоваться в качестве фильтров.
В целом, эта стратегия реверсии 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