Estratégia VRSI vs MARSI


Data de criação: 2024-02-02 17:21:09 última modificação: 2024-02-02 17:21:09
cópia: 0 Cliques: 970
1
focar em
1617
Seguidores

Estratégia VRSI vs MARSI

Visão geral

O VRSI e a estratégia MARSI usam a média móvel para suavizar o RSI, implementando uma estratégia de dois indicadores. A estratégia usa o RSI de preço e o RSI de volume de transação simultaneamente, em combinação com sua média móvel, para gerar um sinal de negociação. Faça mais quando o RSI de preço sobe e faça zero quando o RSI de preço desce.

Princípio da estratégia

A estratégia primeiro calcula o indicador RSI de 9 períodos para o preço (RSI) e o indicador RSI de 9 períodos para o volume de transações (VRSI). Em seguida, calcula a média móvel simples de 5 períodos para esses dois indicadores RSI (MARSI e MAVRSI).

A produção de sinais de negociação é baseada no indicador MARSI. Quando o MARSI sobe, faz mais, quando o MARSI desce, faz menos. Além disso, o indicador MAVRSI é usado para determinar a força do mercado e as possíveis mudanças de tendência.

Por exemplo, em uma operação multihead, se o preço continuar a subir, mas o volume de transação diminuir, isso indica que a força multihead pode estar se enfraquecendo, deve-se estar preparado para a posição de equilíbrio. Por outro lado, em uma operação de cabeça vazia, se o preço continuar a cair, mas o volume de transação aumentar, o que indica que a força de cabeça vazia aumentou, pode continuar a manter os bilhetes.

Análise de vantagens

A estratégia, combinada com a média móvel de dois indicadores RSI, é capaz de capturar a tendência de forma eficaz, enquanto usa as mudanças no volume de transações para julgar a força do mercado e evitar ser manipulada. Comparado ao indicador RSI único, a estratégia pode capturar o ritmo do mercado com mais precisão.

O uso de médias móveis também permite filtrar parte do ruído, tornando o sinal mais confiável. Além disso, a configuração de diferentes parâmetros, como o período RSI e o período de média móvel, também permite a otimização da estratégia.

Análise de Riscos

O principal risco desta estratégia é que pode haver desvios entre os dois indicadores. Quando há desvios entre o preço e o volume de transação, os sinais de negociação também se tornam menos confiáveis.

Outro risco é a facilidade de ser manipulado em situações de correção. Quando os preços estão em correção horizontal, o indicador RSI é propenso a oscilar para cima e para baixo, desencadeando sinais de negociação desnecessários.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Ajustar os parâmetros do RSI e da média móvel para encontrar a combinação ideal

  2. Adicionar outros julgamentos condicionais na geração de sinais de negociação, como um sinal de inversão mais confiável, acionado pelo indicador RSI em áreas de sobrecompra e sobrevenda

  3. Aumentar a estratégia de stop loss, definir stop loss móvel ou stop loss indicador

  4. Combinação com outros indicadores, como a forma de linha K, indicadores de taxa de flutuação, etc. para evitar a fixação

Resumir

O VRSI e a estratégia MARSI combinam com sucesso os indicadores RSI de preço e volume de transação, e a comparação e o julgamento entre os dois indicadores podem melhorar a precisão do sinal e a taxa de ganho. A configuração de parâmetros otimizada e a estratégia de stop loss também possibilitam sua operação estável.

Código-fonte da estratégia
/*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")