Стратегия реверсионной торговли RSI - это количественная стратегия торговли, которая определяет условия перекупления и перепродажи с использованием индикатора относительной силы (RSI) и вступает в длинные или короткие сделки в моменты переворота.
Стратегия основана на следующей логике:
RSI может отражать, является ли текущий рынок перекупленным или перепроданным. RSI измеряет относительный импульс восходящего по отношению к нисходящему путем расчета соотношения средних изменений вверх к средним изменениям вниз за определенный период времени.
Когда RSI входит в зону перекупленности (обычно рассматривается как RSI выше 70), это указывает на сильный подъемный импульс. Будет больше трейдеров, долгое время удерживающих бычьи позиции, и пространство для продолжения восхода ограничено. Цена может перейти вниз, чтобы исправить состояние перекупленности.
Когда RSI входит в зону перепроданности (обычно ниже 30), это указывает на сильный импульс к снижению. Будет больше трейдеров, держащих медвежие позиции, и пространство для продолжения снижения ограничено. Цена может перевернуться вверх, чтобы исправить состояние перепроданности.
Таким образом, мы можем установить порог перекупления RSI на 90 и порог перепродажи на 10.
В частности, логика стратегии заключается:
При расчете значения индикатора RSI, используя ценовую базу RSI в качестве источника, длительность которого составляет 2 периода.
Когда RSI переходит выше 90, это означает, что вы входите в зону перекупленности, идите коротко.
Установите стоп-лосс для каждой сделки, длинный стоп при самой низкой цене, короткий стоп при самой высокой цене.
Если RSI продолжается в более экстремальных уровнях перекупленности / перепроданности, скорректируйте последующую остановку, чтобы дать больше места.
Подумайте о получении прибыли, когда RSI вернется обратно в нейтральную зону около 50.
Если после 3 баров не будет обратного движения, закрыть сделку, чтобы избежать неограниченных потерь.
Стратегия реверсии РСИ имеет следующие преимущества:
Использование RSI для выявления условий перекупа / перепродажи может эффективно улавливать точки переворота на рынке.
Стратегии реверсии имеют систематическое преимущество в том, что они продолжают следовать тенденциям.
Механизм стоп-лосса эффективно контролирует убытки на отдельных сделках.
Следующая остановка может гибко регулировать расстояние остановки на основе продолжающегося движения цены, балансируя между сохранением остановки и захватом большей разницы в цене.
Принудительный выход после фиксированных бар гарантирует, что сделки без своевременного обращения не приведут к неограниченным потерям.
Настраиваемые параметры RSI могут адаптировать стратегию к различным рынкам.
Стратегия также имеет следующие риски:
Как стратегия технического индикатора, эффективность реверсии RSI может иметь предвзятое соответствие кривой. Реальный уровень успешности реверсии торговли может быть ниже результатов обратного теста.
Хотя RSI может идентифицировать условия перекупленности/перепроданности, он не может предсказать точное время переворота.
Неправильные уровни могут привести к отсутствию реверсий или к тому, что они будут остановлены до реверсий.
Вероятность того, что цена совершит очередное изменение, прежде чем достигнет прибыли.
Дистанция остановки потери, установленная необоснованно плотно или слишком свободно, может сделать остановки неэффективными.
Торговые комиссии также могут повлиять на прибыльность стратегии.
Стратегия может быть улучшена следующими способами:
Проверьте различные параметры RSI, чтобы найти оптимальные комбинации, такие как длина RSI, пороговые уровни перекупа/перепродажи.
Добавьте больше фильтров, чтобы избежать ложных сигналов обратного движения, таких как комбинация с MACD и т. д., чтобы увеличить вероятность.
Оптимизировать стратегию остановки потерь, например, остановки на основе ATR, расстояния, скорректированные на волатильность.
Оптимизировать стратегию получения прибыли, например, перемещение получать прибыль, отслеживание большей разницы цен.
Добавьте модели машинного обучения, чтобы помочь оценить обратные действия и улучшить уровень успеха.
Испытать стратегию на разных рынках и инструментах, чтобы найти лучшие параметры для реальной торговли.
В сочетании с объемом торговли, рассматривайте сигналы об обратном движении только при увеличении объема.
В заключение, стратегия реверсии RSI использует силу RSI
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Copyright (c) 2021-present, RicMos //study("RSI2 Sell Strategy, overlay=true) //------------------------------------------USER VARIABLE DEFINITIONS -------------------------------------- var float lots = 0.1 //var float fixed_commission = 0.6 // forex pairs commission value USD per position size two sides var float fixed_commission = 10 // BTC commission value USD per position size two sides //var float money = 10000 //forex pairs position size var float money = 0.3333 //BTC position size strategy(title="RSI2 Sell Strategy", commission_type=strategy.commission.cash_per_order, calc_on_every_tick =true, commission_value = fixed_commission/2, overlay=true, default_qty_value= lots*100000, initial_capital=1000, currency = "USD", calc_on_order_fills = false) len = input(2, minval=1, title="RSI Length") src = input(close, "RSI Source", type = input.source) upRsi = rma(max(change(src), 0), len) downRsi = rma(-min(change(src), 0), len) rsi = downRsi == 0 ? 100 : upRsi == 0 ? 0 : 100 - (100 / (1 + upRsi / downRsi)) var color buyColor = color.blue var color sellColor = color.red plotshape(rsi <= 10 ? low : na, title="Arrow Up", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=buyColor) plotshape(rsi >= 90 ? high : na, title="Arrow Down", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=sellColor) // long = rsi <= 10 // var float longsl = 0 // var int long_ts_points = 0 // if long // longsl:= low // long_ts_points := 200 // if rsi >= 70 // long_ts_points := 100 // else if rsi >= 80 // long_ts_points := 80 // plot (longsl) // var int barsPassed = 0 // barsPassed := barssince(long) // if long // strategy.entry("long", long = strategy.long, qty = 10000, stop = high) // strategy.exit("slLo", from_entry="long", stop = longsl-0.0002, trail_points = long_ts_points ) // //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" ) // strategy.cancel_all(barsPassed > 3 and not long) short = rsi >= 90 var float shortsl = 0 var int short_ts_points = 0 //var bool stClose = 0 if short shortsl:= high short_ts_points := 200 if rsi <= 30 short_ts_points := 100 //stClose :=1 else if rsi <= 20 short_ts_points := 80 //else //stClose := 0 plot (shortsl) var int barsPassedSh = 0 barsPassedSh := barssince(short) if short strategy.entry("short", long = strategy.short, qty = money, stop = low) strategy.exit("slSh", from_entry="short", stop = shortsl, trail_points = short_ts_points, trail_offset =20 ) //strategy.close("short", comment="rsi<30", when = stClose) //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" ) strategy.cancel_all(barsPassedSh > 3 and not short)