La stratégie VRSI et MARSI utilise des moyennes mobiles pour lisser les indicateurs RSI et implémente une stratégie à double indicateur. Elle utilise à la fois l'indicateur RSI du prix et du volume, combiné à leurs moyennes mobiles, pour générer des signaux de trading. Elle va long lorsque le prix RSI augmente et court lorsque le prix RSI chute. Pendant ce temps, elle observe les changements du volume RSI pour juger de la force du marché et des changements de tendance possibles.
La stratégie calcule d'abord l'indicateur RSI de prix (RSI) de 9 périodes et l'indicateur RSI de volume (VRSI) de 9 périodes.
Les signaux de trading sont générés sur la base de l'indicateur MARSI. Il va long quand MARSI monte et court quand MARSI tombe. En outre, l'indicateur MAVRSI est utilisé pour juger de la force du marché et des éventuels changements de tendance.
Par exemple, pendant une tendance haussière, si le prix continue à augmenter mais que le volume commence à diminuer, cela indique que la force haussière peut s'affaiblir et qu'il faut se préparer à fermer les positions longues.
En combinant les moyennes mobiles des deux indicateurs RSI, cette stratégie peut capturer efficacement les tendances, tout en utilisant les variations de volume pour juger de la force du marché et éviter d'être pris au piège.
L'utilisation de moyennes mobiles filtre également un peu de bruit pour rendre les signaux plus fiables.
Le risque majeur de cette stratégie réside dans les divergences qui peuvent se produire entre les deux indicateurs. Lorsqu'il y a une divergence entre le prix et le volume, les signaux de trading peuvent devenir moins fiables. Un jugement manuel de la relation entre les indicateurs est alors nécessaire.
Un autre risque est de se retrouver pris au piège dans les marchés à plage. Lorsque le prix se déplace dans une plage, l'indicateur RSI a tendance à osciller à la hausse et à la baisse, déclenchant des transactions inutiles.
La stratégie peut être optimisée dans les aspects suivants:
Ajustez les paramètres de l'indice de résistance et des moyennes mobiles pour trouver des combinaisons optimales
Ajouter d'autres conditions lors de la génération de signaux, par exemple les signaux de renversement déclenchés dans une zone de surachat/survente ont tendance à être plus fiables
Ajouter des stratégies de stop loss comme le stop loss en mouvement ou l'indicateur stop loss
Incorporer d'autres indicateurs, par exemple des modèles de chandeliers, des indicateurs de volatilité, etc., pour éviter les pièges
La stratégie VRSI et MARSI combine avec succès les indicateurs RSI de prix et de volume. La comparaison et le jugement entre les deux indicateurs peuvent améliorer la précision et la rentabilité du signal. L'optimisation des paramètres et les stratégies de stop loss permettent également un fonctionnement stable. En résumé, en combinant les indicateurs, cette stratégie permet d'obtenir une performance supérieure par rapport à un seul indicateur 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")