Стратегия VRSI и MARSI

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

img

Обзор

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

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

Стратегия сначала рассчитывает 9-периодный индикатор RSI цены (RSI) и 9-периодный индикатор RSI объема (VRSI). Затем она рассчитывает 5-периодную простую скользящую среднюю (MARSI и MAVRSI) этих двух индикаторов RSI.

Торговые сигналы генерируются на основе индикатора MARSI. Он длинный, когда MARSI растет, и короткий, когда MARSI падает. Кроме того, индикатор MAVRSI используется для оценки силы рынка и возможных изменений тренда.

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

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

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

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

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

Основной риск этой стратегии заключается в расхождениях, которые могут возникнуть между двойными показателями. Когда есть расхождение между ценой и объемом, торговые сигналы могут стать менее надежными.

Еще один риск заключается в том, что вы попадете в ловушку на рынках с ограниченным диапазоном. Когда цена движется в диапазоне, индикатор RSI имеет тенденцию колебаться вверх и вниз, вызывая ненужные сделки.

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

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

  1. Корректировать параметры RSI и скользящих средних для поиска оптимальных комбинаций

  2. Добавление других условий при генерировании сигналов, например, сигналы обворота, вызванные в зоне перекупленности/перепроданности, как правило, более надежные.

  3. Добавьте стратегии остановки потери, такие как движение остановки потери или индикатор остановки потери

  4. Включить другие индикаторы, например, модели свечей, индикаторы волатильности и т.д., чтобы избежать ловушек.

Резюме

Стратегия 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")
    

Больше