A estratégia VRSI e MARSI utiliza médias móveis para suavizar os indicadores RSI e implementa uma estratégia de indicador duplo. Ele usa tanto o indicador RSI de preço e volume, combinado com suas médias móveis, para gerar sinais de negociação. Ele vai longo quando o preço RSI sobe e vai curto quando o preço RSI cai. Enquanto isso, ele observa as mudanças no volume RSI para julgar a força do mercado e possíveis mudanças de tendência.
A estratégia calcula primeiro o indicador RSI de preço (RSI) de 9 períodos e o indicador RSI de volume (VRSI) de 9 períodos.
Os sinais de negociação são gerados com base no indicador MARSI. Ele vai longo quando o MARSI sobe e vai curto quando o MARSI cai. Além disso, o indicador MAVRSI é usado para julgar a força do mercado e possíveis mudanças de tendência.
Por exemplo, durante uma tendência de alta, se o preço continua a subir, mas o volume começa a diminuir, isso sinaliza que a força de alta pode estar enfraquecendo e deve-se preparar para fechar posições longas.
Ao combinar as médias móveis de indicadores RSI duplos, esta estratégia pode efetivamente capturar tendências, ao mesmo tempo em que usa mudanças de volume para julgar a força do mercado e evitar ficar preso.
O uso de médias móveis também filtra algum ruído para tornar os sinais mais confiáveis.
O principal risco desta estratégia reside nas divergências que podem ocorrer entre os indicadores duais. Quando há uma divergência entre preço e volume, os sinais de negociação podem tornar-se menos confiáveis.
Outro risco é ficar preso em mercados de faixa. Quando o preço se move em uma faixa, o indicador RSI tende a oscilar para cima e para baixo, desencadeando negociações desnecessárias. Ajuste de parâmetros ou julgamento do nível absoluto dos indicadores é necessário então.
A estratégia pode ser otimizada nos seguintes aspectos:
Ajustar os parâmetros do RSI e das médias móveis para encontrar combinações ideais
Adicionar outras condições ao gerar sinais, por exemplo, os sinais de reversão desencadeados na área de sobrecompra/supervenda tendem a ser mais confiáveis
Adicionar estratégias de stop loss como stop loss móvel ou stop loss indicador
Incorporar outros indicadores, por exemplo, padrões de velas, indicadores de volatilidade, etc., para evitar armadilhas
A estratégia VRSI e MARSI combina com sucesso os indicadores RSI de preço e volume. A comparação e julgamento entre os dois indicadores podem melhorar a precisão e a lucratividade do sinal. A otimização de parâmetros e as estratégias de stop loss também possibilitam uma corrida estável.
/*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")