
Стратегия RSI Dynamic Reversal использует одновременно регулярные RSI и быстрые RSI, а также фильтры на K-линии, чтобы эффективно идентифицировать возможности для обратного роста.
Стратегия реализуется с помощью следующих компонентов:
Рассчитайте обычный RSI, RSI Win Ratio, RSI Paris-Sharr, взяв среднее из них как RSI Коннора.
Быстрый RSI рассчитывается с использованием ценовых изменений, отражающих сверхкороткие циклы.
Необходимо сделать больше физического солнечного и теневого проводов, чтобы предотвратить ложное прорыв.
Коннорс RSI ниже 20, быстрый RSI ниже 25, появляется реальный солнечный свет, делать больше.
Коннорс RSI выше 80, быстрый RSI выше 75, появляется реальная тень, пустота.
Субъект выходит из строя при переходе на стоп-лост.
Коннорс RSI определяет долгосрочные трендовые переломы, быстрый RSI определяет короткие трендовые переломы, K-линия обеспечивает эффективность прорыва, чтобы эффективно обнаруживать возможности для перелома и своевременно открывать позиции для обратной операции.
Эта стратегия имеет следующие преимущества:
Коннорс RSI отражает длинный цикл, а быстрый RSI отражает короткий цикл, которые в сочетании позволяют более точно определить точку поворота.
Операция только при фактическом прорыве позволяет снизить убытки, связанные с ложным прорывом.
Параметры RSI, тип торговли и период торговли могут быть легко адаптированы к различным рынкам.
RSI и K-линия являются основными показателями, логика стратегии проста и понятна.
Использование только встроенных показателей, небольшой объем кода и низкая сложность реализации.
Основные риски этой стратегии:
После появления обратного сигнала цены продолжают движение по прежнему тренду, что приводит к убыткам.
Некоторые из них, например, были задействованы на рынке в 2014 году, а в 2015 году были задействованы на рынке в 2014 году.
Фильтрация не может полностью предотвратить прорыв.
RSI параметры установлены неправильно, что может привести к пропущенным возможностям или недействительным сделкам.
В особых ситуациях RSI отключается и дает ошибочный сигнал.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация стратегии остановки убытков, чтобы сделать остановку убытков более разумной и уменьшить одиночные потери.
Добавлены фильтры для MACD, KD и других показателей, чтобы сделать сигнал более надежным.
Вместе с тем, как и в случае с другими инструментами, они используют различные методы, чтобы избежать низкой вероятности.
Тестирование параметров для различных типов и циклов, чтобы найти оптимальные параметры.
“Мы не можем позволить, чтобы это произошло, потому что мы не можем позволить, чтобы это произошло”, - сказал он.
Стратегия RSI-динамического переворота повышает эффективность сигнала путем определения длинных и коротких переворотов через Коннорс RSI и быстрый RSI. Эта стратегия обладает преимуществами, такими как портфель индикаторов, гибкость регулирования параметров, возможность захвата переворота и своевременное вмешательство в сделки при перепродаже. Однако в этой стратегии также присутствует определенный риск неудачи переворота, прорыва ложного прорыва и т. Д.
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, 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")
//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3
//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)
//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false
//Signals
up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()