В процессе загрузки ресурсов... загрузка...

Модифицированный индекс относительной силы в соответствии со стратегией

Автор:Чао Чжан, Дата: 2024-03-29 16:16:37
Тэги:

img

Обзор

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

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

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

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

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

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

  1. Показатель RSI Modified склонен генерировать ложные сигналы на рынках с диапазоном
  2. Захватывание поворотных моментов тренда может иметь отставание
  3. На один показатель легко влияет ценовой шум

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

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

Резюме

Эта стратегия использует характеристики модифицированного индикатора 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)



Больше