Стратегия следования за трендом на основе модифицированного индекса относительной силы


Дата создания: 2024-03-29 16:16:37 Последнее изменение: 2024-03-29 16:16:37
Копировать: 9 Количество просмотров: 605
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе модифицированного индекса относительной силы

Обзор

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

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

  1. Расчет цены на EMA в качестве ввода для модифицированного RSI
  2. Расчет модифицированного RSI
  3. Вычислить EMA с модифицированным RSI в качестве сигнальной линии
  4. Рассчитайте разницу между модифицированным RSI и сигнальной линией в виде прямоугольной диаграммы
  5. При пересечении линии сигнала на Modified RSI, когда прямоугольная диаграмма больше 0 - создается сигнал покупки
  6. Сигнал продажи, когда Modified RSI проходит по сигнальной линии и диаграмма меньше 0

Стратегические преимущества

  1. Модифицированный RSI лучше отслеживает тенденции, чем традиционный RSI
  2. В сочетании с перекрестным сигналом Modified RSI и сигналом прямого диаграмма эффективно фильтрует ложные сигналы
  3. Параметры регулируются для различных рынков и циклов
  4. Процесс прост и вычислительный

Стратегический риск

  1. Модифицированный RSI может подавать ошибочные сигналы на рынке
  2. Возможно, задержка в поимке точек перехода
  3. Одиночный индикатор подвержен ценовому шуму

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

  1. Можно использовать в сочетании с другими трендовыми показателями, такими как скользящие средние, для повышения надежности сигнала
  2. Модуль Stop Loss Stop-Stop может быть добавлен, чтобы контролировать риски одной сделки
  3. Параметры могут быть оптимизированы в зависимости от особенностей рынка
  4. Можно добавить модуль управления позициями, динамически корректировать позиции

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

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

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © YogirajDange

//@version=5


// Verical lines


// // Define the times
// t1 = timestamp(year, month, dayofmonth, 09, 15) // 9:15
// t2 = timestamp(year, month, dayofmonth, 11, 15) // 11:15
// t3 = timestamp(year, month, dayofmonth, 13, 15) // 1:15
// t4 = timestamp(year, month, dayofmonth, 15, 25) // 3:25

// // Check if the current bar is on the current day
// is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow))

// // Draw a vertical line at each time
// if is_today and (time == t1 or time == t2 or time == t3 or time == t4)
//     line.new(x1 = bar_index, y1 = low, x2 = bar_index, y2 = high, extend = extend.both, color=color.red, width = 1)

strategy('Modified RSI')
col_grow_above = input(#02ac11, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#6ee47d, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#e5939b, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#dd0000, "Fall", group="Histogram", inline="Below")
EMA_length = input.int(13, 'Price_EMA', minval=1)
RSI_length = input.int(14, 'RSI_Period', minval=1)
Avg_length = input.int(5, 'RSI_Avg_EMA', minval=1)
fastMA = ta.ema(close, EMA_length)
modrsi = ta.rsi(fastMA, RSI_length)
RSIAVG = ta.ema(modrsi, Avg_length)
plot(modrsi, color=color.rgb(38, 0, 255), linewidth=2)
plot(RSIAVG, color=color.rgb(247, 0, 0))
rsiUpperBand = hline(60, 'RSI Upper Band', color=#099b0e)
//hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(40, 'RSI Lower Band', color=#e90101)

RSI_hist = modrsi - RSIAVG

//plot(RSI_hist,"RSI_Histogram", color = #c201e9, style = plot.style_columns,linewidth= 5)

plot(RSI_hist, title="RSI_Histogram", style=plot.style_columns, color=(RSI_hist>=0 ? (RSI_hist[1] < RSI_hist ? col_grow_above : col_fall_above) : (RSI_hist[1] < RSI_hist ? col_grow_below : col_fall_below)))


/////// Moving Averages 20 50 EMA

fast_ma = input.int(20, minval=2, title="Fast_EMA")
slow_ma = input.int(50, minval=2, title="Slow_EMA")

src = input.source(close, title="Source")

out = ta.ema(src, fast_ma)
out1 = ta.ema(src, slow_ma)

//plot(out, title="20 EMA", color=color.rgb(117, 71, 247), linewidth = 2)
//plot(out1, title="50 EMA", color=color.rgb(0, 0, 0), linewidth = 2)


longCondition = ((ta.crossover(modrsi, RSIAVG)) and (RSI_hist > 0))
if longCondition
    strategy.entry('B', strategy.long)

shortCondition = ((ta.crossunder(modrsi, RSIAVG)) and (RSI_hist < 0))
if shortCondition
    strategy.entry('S', strategy.short)