Индикатор импульса RSI захват разворота торговая стратегия


Дата создания: 2024-01-03 12:09:48 Последнее изменение: 2024-01-03 12:09:48
Копировать: 1 Количество просмотров: 661
1
Подписаться
1621
Подписчики

Индикатор импульса RSI захват разворота торговая стратегия

Обзор

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

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

  1. На высоких временных рамках рассчитывается сила тренда ADX.

  2. Вычисление направления тренда по SMA на высоких временных рамках. Повышение SMA означает повышение цены, а снижение SMA - падение цены.

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

  4. Когда ADX повышается, SMA повышается, RSI перекупает низкие временные рамки, считая, что тенденция укрепляется вверх, тогда можно сделать пробел.

  5. Когда ADX повышается, SMA снижается, а RSI перепродается в более низких временных рамках, считая, что тенденция усиливается вниз, можно сделать больше.

Анализ преимуществ

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

  2. Использование комбинации показателей на разных временных рамках может повысить надежность сигнала.

  3. Стратегия RSI simplicity сама по себе, легко понять и реализовать.

Анализ рисков

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

  2. Оценка большого циклического тренда может быть ошибочной, что делает стратегию неприемлемой для данной рыночной среды. Можно рассмотреть возможность использования большего количества показателей для определения тренда.

  3. Частота торгов может быть слишком высокой, а стоимость торгов влияет на прибыльность. Можно соответствующим образом скорректировать параметры RSI, чтобы снизить количество торгов.

Направление оптимизации

  1. Тестируйте больше комбинаций параметров, чтобы найти оптимальное сочетание параметров RSI и параметров ADX, SMA.

  2. Добавление механизмов хранения убытков для контроля одиночных убытков

  3. Рассматривайте возможность снижения позиции в период медленного колебания в сочетании с показателями волатильности.

  4. Оптимизация конкретных цен входа и выхода, например, максимальная цена, прорвавшая предыдущую K-линию, входит в пустоту.

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

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

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

//@version=3
strategy("RSI scalping", overlay=true)

CustSession 	= input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0	= input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )

RSI = rsi(close, 7)

res		=	CustSession ? SessionTF0 : period

o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)

 // ADX higher time frame
dirmov(len) =>
	up = change(h)
	down = -change(l)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truer = request.security(syminfo.tickerid, res, tr)
	truerange = rma(truer, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len

ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2]  > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising 

if (longCondition)
    strategy.entry("Long entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)