Stratégie de rupture du modèle RSI W

Auteur:ChaoZhang est là., Date: 2023-09-17 18h24 et 17h
Les étiquettes:

Résumé

Cette stratégie identifie les modèles W sur l'indicateur RSI combiné avec les conditions de tendance pour mettre en œuvre des opérations de rupture à faible achat-vente élevée.

La logique de la stratégie

  1. Identifiez les modèles W en utilisant le RSI ((5) pour localiser les opportunités d'achat potentielles. Les modèles W apparaissant dans les zones de survente indiquent des revers imminents.

  2. Le franchissement de l'EMA20 au-dessus de l'EMA50 détermine la tendance haussière, fournissant un biais directionnel.

  3. Lorsqu'un modèle W est identifié et que la tendance est à la hausse, des ordres longs sont déclenchés.

  4. Si vous êtes déjà en position, des achats supplémentaires sont autorisés si l'indice RSI dépasse à nouveau 20.

  5. Quand le RSI dépasse 75, il indique des conditions de surachat, les sorties de profit sont déclenchées.

  6. Si la perte dépasse ce point, une sortie de perte est déclenchée.

Analyse des avantages

  1. L'identification du motif W augmente la certitude d'entrée.

  2. La combinaison avec des filtres de tendance évite de faux signaux et de manquer des chances d'inversion.

  3. L'indice RSI (5) peut saisir rapidement les opportunités à court terme.

  4. Les points de prise de profit et d'arrêt de perte aident à contrôler les risques.

Analyse des risques

  1. La reconnaissance des motifs W dépend du réglage des paramètres, il existe des risques de formation manquantes ou d'identification erronée.

  2. En tant que signal de renversement, il existe des risques d'être pris au piège.

  3. Le RSI est sujet à de fausses éruptions, un bon filtrage du signal est nécessaire.

  4. Si le point d'arrêt des pertes est trop large, des arrêts prématurés peuvent survenir.

Directions d'optimisation

  1. Testez différentes périodes RSI pour trouver les paramètres optimaux.

  2. Ajoutez plus de critères pour augmenter la précision de la reconnaissance de motifs.

  3. Combiner avec d'autres indicateurs pour filtrer les signaux et réduire les transactions incorrectes.

  4. Ajustez dynamiquement les niveaux de stop loss pour optimiser la stratégie de stop loss.

  5. Optimiser la stratégie de prise de bénéfices pour prolonger la période de détention tout en assurant la rentabilité.

Résumé

Cette stratégie utilise des modèles RSI W pour une négociation efficace de rupture d'inversion. Mais une optimisation des paramètres et l'ajout d'autres indicateurs techniques pour le filtrage des signaux peuvent améliorer la stabilité et la rentabilité 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 )



Plus de