Стратегия индекса относительной динамики

Автор:Чао Чжан, Дата: 2023-11-02 17:21:45
Тэги:

img

Обзор

Стратегия относительного индекса импульса (RMI) - это улучшенная версия, основанная на индексе импульса.

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

Формула расчета RMI выглядит следующим образом:

xMom = xPrice - xPrice[Length]  // Price change over Length periods
xMU = If xMom >= 0: previous xMU minus xMU/Length plus xMom; else: previous xMU
xMD = If xMom <= 0: previous xMD minus xMD/Length plus absolute value of xMom; else: 0 
RM = xMU / xMD
RMI = 100 * (RM / (1 + RM))

Сначала вычислить изменение цены xMom за периоды длины. Если xMom>=0, то есть цена растет, накапливайте ее в xMU; если xMom<0, то есть цена падает, накапливайте ее абсолютное значение в xMD. RM - это соотношение между xMU и xMD, представляющее импульс взлетов и падений. RMI нормализует RM в диапазоне 0-100.

Когда RMI выше порога SellZone, рынок перекуплен, идите коротко.

Преимущества

  • По сравнению с RSI, RMI является более чувствительным и может зафиксировать возможности реверсии раньше.
  • RMI измеряет динамику взлетов и падений, меньше подверженных влиянию консолидации.
  • На основе импульса RMI может лучше определить статус перекупленности/перепроданности.

Риски

  • Как и другие стратегии обратного движения, RMI подвергается риску быть остановленным сильными тенденциями.
  • Параметры RMI должны быть оптимизированы для различных продуктов, иначе результаты могут быть плохими.
  • Необходимо установить разумные пороги перекупки/перепродажи, в противном случае может возникнуть слишком много ложных сигналов.

Риски могут быть уменьшены путем расширения стоп-лосса, оптимизации параметров, сочетания с трендовыми стратегиями и т.д.

Улучшение

Стратегия RMI может быть улучшена в следующих аспектах:

  • Оптимизируйте параметр длины для максимального возврата.
  • Оптимизировать пороги перекупки/перепродажи для уменьшения ложных сигналов.
  • Добавьте стоп-потеря для контроля одиночных потерь.
  • Комбинируйте с следующими тенденциями или движущимися средними стратегиями, чтобы увеличить процент выигрыша.
  • Выбирать подходящие торговые сессии на основе характеристик продукта для улучшения стабильности.

Заключение

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-10-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/10/2017
// The Relative Momentum Index (RMI) was developed by Roger Altman. Impressed 
// with the Relative Strength Index's sensitivity to the number of look-back 
// periods, yet frustrated with it's inconsistent oscillation between defined 
// overbought and oversold levels, Mr. Altman added a momentum component to the RSI.
// As mentioned, the RMI is a variation of the RSI indicator. Instead of counting 
// up and down days from close to close as the RSI does, the RMI counts up and down 
// days from the close relative to the close x-days ago where x is not necessarily 
// 1 as required by the RSI). So as the name of the indicator reflects, "momentum" is 
// substituted for "strength".   
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Relative Momentum Index", shorttitle="RMI")
xPrice = close
Length = input(20, minval=1)
BuyZone = input(40, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(SellZone, color=red, linestyle=line)
// hline(BuyZone, color=green, linestyle=line)
xMom = xPrice - xPrice[Length]
xMU = iff(xMom >= 0, nz(xMU[1], 1) - (nz(xMU[1],1) / Length) + xMom, nz(xMU[1], 1))
xMD = iff(xMom <= 0, nz(xMD[1], 1) - (nz(xMD[1],1) / Length) + abs(xMom), nz(xMD[1], 0))
RM = xMU / xMD
nRes = 100 * (RM / (1+RM))
pos = iff(nRes < BuyZone, 1,
	   iff(nRes > SellZone, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(nRes, color=blue, title="RMI")

Больше