Stratégie de cassure du modèle RSI W


Date de création: 2023-09-17 18:24:17 Dernière modification: 2023-09-17 18:24:17
Copier: 0 Nombre de clics: 879
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie permet de réaliser des opérations de rupture de bas en haut par l’identification des formes W sur l’indicateur RSI, en combinaison avec des conditions de jugement de tendance. Par rapport aux jugements communs des zones de survente et de survente du RSI, l’identification des formes W permet de mieux positionner le moment d’achat.

Principe de stratégie

  1. Utilisez le RSI ((5)) pour juger de la forme W et trouver des opportunités d’achat potentielles. Lorsque la forme W apparaît dans une zone de survente, elle annonce une inversion imminente.

  2. L’EMA20 porte le jugement de l’EMA50 comme tendance à la hausse et le jugement de la direction générale d’entrée.

  3. L’achat est effectué lorsque la forme W est identifiée et que la tendance est à la hausse.

  4. Si vous êtes déjà en position, vous pouvez vous positionner à nouveau lorsque le RSI sera de nouveau inférieur à 20.

  5. Lorsque le RSI dépasse 75, c’est une zone de survente et une sortie de blocage.

  6. Le stop loss est fixé à 8%, et le stop loss est retiré si la perte est supérieure à ce point.

Analyse des avantages

  1. La reconnaissance de la forme W augmente la certitude d’admission.

  2. Il est important de filtrer les signaux négatifs en fonction des tendances pour éviter de rater l’occasion d’un renversement.

  3. Le paramètre RSI est réglé sur 5 jours pour saisir les opportunités de courts-circuits.

  4. Il est possible de régler le risque en définissant un point d’arrêt.

Analyse des risques

  1. La reconnaissance de la forme W dépend des paramètres, ce qui peut entraîner une méconnaissance ou une mauvaise interprétation de la forme.

  2. Le risque d’être piégé est un signal de retour.

  3. Les RSI sont sujettes à de fausses ruptures et doivent être filtrées de manière appropriée.

  4. Si le seuil de rupture est trop élevé, la rupture peut survenir prématurément.

Direction d’optimisation

  1. Tester différents paramètres du cycle RSI pour trouver la combinaison optimale de paramètres.

  2. Augmentation des conditions de détection de la forme et amélioration de l’exactitude de l’identification.

  3. Le filtrage des signaux en combinaison avec d’autres indicateurs permet de réduire les erreurs de trading.

  4. Modifier dynamiquement la position de stop loss et optimiser la stratégie de stop loss.

  5. Optimiser les stratégies de coupe et prolonger la période de détention pour garantir la rentabilité.

Résumer

La stratégie utilise le RSI W pour réaliser des opérations de rebond très efficaces. Cependant, il est nécessaire d’optimiser davantage le paramétrage et de filtrer le signal avec d’autres indicateurs techniques, ce qui améliore la stabilité de la stratégie et le niveau de rentabilité.

Code source de la stratégie
/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
strategy(title="RSI W Pattern strategy", pyramiding=2, shorttitle="RSI W Pattern", overlay = false)

//Strategy Rules
//ema20 is above ema50
//RSI5 making W pattern in oversold area  or just below 70 level  , you can define the value for parameter buyRsiEntry --- dont go beyond 70
//Exit when RSI reaches 75 

len = input(title="RSI Period", minval=1, defval=5)
buyRsiEntry = input(title="look for W pattern bottom edges well below RSI level (BUY) ", minval=10, defval=65, maxval=70)
//numberOfBars = input(title="Number of Bars in W pattern ", minval=4, defval=4, maxval=6)

emaL = input(title="Long Term EMA", minval=1, defval=50, maxval=200)
emaS = input(title="Short Term EMA", minval=1, defval=20, maxval=200)

stopLoss = input(title="Stop Loss %", minval=1, defval=8, maxval=10)

//rsiWp1=false

myRsi = rsi(close,len)

//longEmaVal=ema(close,emaL)
//shortEmaVal=ema(close,emaS)

entryEma=ema(close,5)  // This is used as filetr for BUY


isEma20AboveEma50=ema(close,emaS)>ema(close,emaL) ? true : false 

//W Pattern
//rsiWp1 =  myRsi>myRsi[1] and myRsi>=30 and myRsi[1]<myRsi[2] and myRsi[2]>myRsi[3]  and myRsi[3]<myRsi[4] //This is published one
rsiWp1 =    myRsi>myRsi[1] and myRsi>=30 and myRsi[1]<myRsi[2] and myRsi[2]>myRsi[3]  and myRsi[3]<myRsi[4] and (low[1]<=low[4] or low[3]<=low[4] ) // looking for recent low

//rsiWp1 =  myRsi>myRsi[1] and myRsi>=30 and myRsi[1]<myRsi[2] and myRsi[2]>myRsi[3]  and myRsi[3]<myRsi[4]  //Ths one has 92% win rate and 4.593 prfit factor

//long condition filters
//1. ema20 > ema50
//2. Rsi5 has W pattern
//3. current RSI <= 65 (parameter buyRsiEntry)  (dont go beyond 70 , becuase that is already overbought area)
//4. current price low/close is below 5 ema --- looking for pullback  -- Optional
longCondition =  isEma20AboveEma50 and rsiWp1   and (myRsi<=buyRsiEntry  and myRsi>=30)  
//and (low<entryEma or close<entryEma)  --- if this optional required , add it to above condition

patternText=" W "

barcolor(longCondition?color.yellow:na)

//initial entry
strategy.entry("RSI_W_LE", comment="Buy" , long=true, when=longCondition  )

//legging in to existing 
strategy.entry("RSI_W_LE",comment="Add", long=true, when=strategy.position_size>0 and crossover(myRsi,10 ))

//calculate stoploss value
stopLossValue=strategy.position_avg_price -  (strategy.position_avg_price*stopLoss/100) 


rsiPlotColor=longCondition ?color.yellow:color.purple


plot(myRsi, title="RSI", linewidth=2, color=color.purple)
//    plot(myRsi, title="RSI", linewidth=2, color=rsiWp1?color.yellow:color.purple)
    //plot(myRsi[1], title="RSI", linewidth=2, color=rsiWp1==true?color.yellow:color.purple)
    //plot(myRsi[2], title="RSI", linewidth=2, color=rsiWp1?color.yellow:color.purple)
    //plot(myRsi[3], title="RSI", linewidth=2, color=rsiWp1?color.yellow:color.purple)
    //plot(myRsi[4], title="RSI", linewidth=2, color=rsiWp1?color.yellow:color.purple)
    


hline(40, title="Middle Line", color=color.blue, linestyle=hline.style_dashed)
obLevel = hline(75, title="Overbought", color=color.red, linestyle=hline.style_dashed)
osLevel = hline(30, title="Oversold", color=color.purple, linestyle=hline.style_dashed)
fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)


plotshape(
	 longCondition ? myRsi[1] : na,
	 offset=-1,
	 title="W Pattern",
	 text=patternText,
	 style=shape.labelup,
	 location=location.absolute,
	 color=color.purple,
	 textcolor=color.yellow,
	 transp=0
	 )	 
	 
bgcolor(strategy.position_size>0?color.green:na, transp=40, title='In Long Position')

//take profit or close when RSI reaches 75    
takeProfit=crossover(myRsi,75)

//close when RSi reaches profit level 
strategy.close("RSI_W_LE", comment="TP Exit", qty=strategy.position_size,when=crossover(myRsi,75) and close>strategy.position_avg_price )


//close everything when stoploss hit  
longCloseCondition=close<(strategy.position_avg_price - (strategy.position_avg_price*stopLoss/100)  ) //or crossunder(myRsi,30)
strategy.close("RSI_W_LE", comment="SL Exit", qty=strategy.position_size,when=longCloseCondition )