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

Автор:Чао Чжан, Дата: 2024-02-06 09:29:34
Тэги:

img

Обзор

Стратегия Dual Reversal Momentum Index сочетает в себе стратегию 123 Reversal и стратегию Relative Momentum Index (RMI).

Принцип стратегии

Стратегия состоит из двух частей:

  1. 123 Стратегия отмены

    • Длинный, когда закрытие вчерашнего дня ниже, чем в предыдущие дни, и сегодняшнее закрытие выше, чем в предыдущие дни, и 9-дневный медленный K ниже 50
    • Короткий, когда закрытие вчера выше, чем в предыдущие дни, и сегодняшнее закрытие ниже, чем в предыдущие дни, и 9-дневный Fast K выше 50
  2. Стратегия относительного индекса импульса (RMI)

    • RMI - это вариация RSI с добавлением импульсного компонента.
    • Долгий, когда RMI ниже перекупленной линии; короткий, когда RMI выше перепроданной линии

Стратегия генерирует торговые сигналы только тогда, когда 123 Reversal и RMI дают выровненные двойные сигналы.

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

Преимущества этой стратегии включают:

  1. Улучшенная точность сигнала с двойными индикаторами
  2. Техники обратного отсчета, подходящие для рынков с ограниченным диапазоном
  3. Чувствительный показатель RMI для выявления поворотных точек сильных тенденций

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

Существуют также некоторые риски:

  1. Двойные фильтры могут упустить некоторые торговые возможности
  2. Сигналы обратного движения могут быть ошибочными.
  3. Неправильные настройки параметров RMI могут повлиять на эффективность

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

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

Стратегия может быть дополнительно оптимизирована путем:

  1. Испытание различных комбинаций параметров для поиска оптимального
  2. Попытка использования различных комбинаций индикаторов обратного движения, например, KDJ, MACD
  3. Корректировка формулы RMI, чтобы сделать ее более чувствительной
  4. Добавление механизмов остановки потерь для контроля одиночных потерь
  5. Сочетание объема торговли для предотвращения ложных сигналов

Заключение

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


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/06/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// 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". 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


RMI(Length,BuyZone, SellZone) =>
    pos = 0.0
    xMU = 0.0
    xMD = 0.0
    xPrice = close
    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))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Relative Momentum Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Relative Momentum Index ----")
LengthRMI = input(20, minval=1)
BuyZone = input(40, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posRMI = RMI(LengthRMI,BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posRMI == 1 , 1,
	   iff(posReversal123 == -1 and posRMI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше