Стратегия VRSI и MARSI использует скользящие средние для сглаживания индикаторов RSI и реализует стратегию двойного индикатора. Она использует как индикатор RSI цены и объема, в сочетании с их скользящими средними, для генерации торговых сигналов. Она длится, когда цена RSI повышается, и становится короткой, когда цена RSI падает. Между тем, она наблюдает за изменениями объема RSI, чтобы судить о силе рынка и возможных изменениях тренда.
Стратегия сначала рассчитывает 9-периодный индикатор RSI цены (RSI) и 9-периодный индикатор RSI объема (VRSI). Затем она рассчитывает 5-периодную простую скользящую среднюю (MARSI и MAVRSI) этих двух индикаторов RSI.
Торговые сигналы генерируются на основе индикатора MARSI. Он длинный, когда MARSI растет, и короткий, когда MARSI падает. Кроме того, индикатор MAVRSI используется для оценки силы рынка и возможных изменений тренда.
Например, во время восходящего тренда, если цена продолжает расти, но объем начинает снижаться, это сигнализирует о том, что бычья сила может ослабеть, и следует готовиться к закрытию длинных позиций.
Сочетая скользящие средние двойных индикаторов RSI, эта стратегия может эффективно улавливать тенденции, используя изменения объема для оценки силы рынка и избегать попадания в ловушку.
Использование скользящих средних также фильтрует шум, чтобы сделать сигналы более надежными.
Основной риск этой стратегии заключается в расхождениях, которые могут возникнуть между двойными показателями. Когда есть расхождение между ценой и объемом, торговые сигналы могут стать менее надежными.
Еще один риск заключается в том, что вы попадете в ловушку на рынках с ограниченным диапазоном. Когда цена движется в диапазоне, индикатор RSI имеет тенденцию колебаться вверх и вниз, вызывая ненужные сделки.
Стратегия может быть оптимизирована в следующих аспектах:
Корректировать параметры RSI и скользящих средних для поиска оптимальных комбинаций
Добавление других условий при генерировании сигналов, например, сигналы обворота, вызванные в зоне перекупленности/перепроданности, как правило, более надежные.
Добавьте стратегии остановки потери, такие как движение остановки потери или индикатор остановки потери
Включить другие индикаторы, например, модели свечей, индикаторы волатильности и т.д., чтобы избежать ловушек.
Стратегия VRSI и MARSI успешно сочетает в себе индикаторы RSI цены и объема. Сравнение и суждение между двойными индикаторами может улучшить точность и рентабельность сигнала. Оптимизация параметров и стратегии остановки потерь также позволяют стабильно работать. Вкратце, объединяя индикаторы, эта стратегия достигает превосходных результатов по сравнению с одним индикатором RSI.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("VRSI-MARSI Strategy", shorttitle="(V/MA)RSI Str.", overlay=false, default_qty_type=strategy.percent_of_equity, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0, default_qty_value=5, initial_capital=100) // RSI(close, ="RSI") and RSI(Volume, ="VRSI") src = close, len = input(9, minval=1, title="Length RSI") src2 = volume, len2 = input(9, minval=1, title="Length VRSI)") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) up2 = rma(max(change(src2), 0), len2) down2 = rma(-min(change(src2), 0), len2) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) rsi2 = down2 == 0 ? 100 : up2 == 0 ? 0 : 100 - (100 / (1 + up2 / down2)) // MA(=Moving Average) of RSI(close, ="MARSI") and RSI(Volume, ="MAVRSI") len3 = input(5, minval=1, title="Length MARSI") marsi = sma(rsi, len3) len4 = input(5, minval=1, title="Length MAVRSI") marsi2 = sma(rsi2, len4) // Plot: // Default plot of RSI and VRSI: not visible but can be made visible // Default plot MARSI and MAVRSI: visible p1 = plot(rsi, linewidth=2, transp=100, color=color.yellow, title="RSI") p2 = plot(rsi2, linewidth=2, transp=100, color=color.orange, title="VRSI") m1 = plot(marsi, color=(marsi>=0 ? (marsi[1] < marsi ? color.yellow : color.blue) : (marsi[1] < marsi ? color.yellow : color.blue) ), linewidth = 2, transp = 0, title="MARSI") m2 = plot(marsi2, color=color.orange, linewidth = 2, transp = 0, title="MAVRSI") // Color fill: // Default color fill "RSI - VRSI": not visible but can be made visible // Default color fill "MARSI - MAVRSI": visible fill(p1,p2, color = rsi>rsi2 ? color.green : color.red, transp=100, title="BG RSI-VRSI") fill(m1,m2, color = marsi>marsi2 ? color.green : color.red, transp=75, title="BG MARSI-MAVRSI") // Lines: h2=hline(20, color=color.green, linestyle=hline.style_dotted, title="Extreme Oversold Rsi") h3=hline(30, color=color.black, linestyle=hline.style_dotted, title="Oversold Rsi") h5=hline(50, color=color.yellow, linestyle=hline.style_dashed, title="Middle line") h7=hline(70, color=color.black, linestyle=hline.style_dotted, title="Overbought Rsi") h8=hline(80, color=color.red, linestyle=hline.style_dotted, title="Extreme Overbought Rsi") // Color fill between Lines "20-30" and "70-80" represents the crossing of "MARSI" and "MAVRSI": fill(h2, h3, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="20-30 BG color X MARSI/MAVRSI") fill(h7, h8, color=(marsi2 > marsi ? color.red : color.green), transp=80, title="70-80 BG color X MARSI/MAVRSI") ///Long Entry/// longCondition = marsi > marsi[1] if (longCondition) strategy.entry("Long", strategy.long) ///Long exit/// Xlong =input(true) closeConditionLong = marsi < marsi[1] and Xlong if (closeConditionLong) strategy.close("Long") ///Short Entry/// shortCondition = marsi < marsi[1] if (shortCondition) strategy.entry("Short", strategy.short) ///Short exit/// Xshort =input(true) closeConditionShort = marsi > marsi[1] and Xshort if (closeConditionShort) strategy.close("Short")