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

Автор:Чао Чжан, Дата: 2024-01-03 12:09:48
Тэги:

img

Обзор

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

Логика стратегии

  1. ADX на более высоких временных отрезках оценивает силу тренда.

  2. Увеличение SMA на более высоких временных отрезках определяет направление тренда.

  3. RSI на более низких временных отрезках оценивает условия перекупа и перепродажи.

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

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

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

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

  2. Использует индикаторы по временным рамкам, улучшает надежность сигналов.

  3. Стратегия RSI проста в понимании и реализации.

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

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

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

  3. Потенциально высокая частота торговли, влияющая на рентабельность из-за затрат на транзакции.

Руководство по оптимизации

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

  2. Добавить механизм остановки потери для контроля потери на одной сделке.

  3. Подумайте о индикаторе волатильности для уменьшения размера позиции при низкой волатильности.

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

Заключение

Эта стратегия сочетает в себе суждение о тренде и сигналы обворота, чтобы найти локальные изменения в основных тенденциях. По сравнению с использованием только 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)

Больше