RSI W-Muster-Breakout-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-17 18:24:17
Tags:

Übersicht

Diese Strategie identifiziert W-Muster auf dem RSI-Indikator in Kombination mit Trendbedingungen, um Breakout-Operationen mit niedrigem Kauf-hohem Verkauf zu implementieren.

Strategie Logik

  1. Identifizieren Sie W-Muster unter Verwendung des RSI (**) (5) um potenzielle Kaufmöglichkeiten zu lokalisieren.

  2. Ein EMA20-Kreuz über der EMA50 bestimmt den Aufwärtstrend und liefert eine Richtungsverzerrung.

  3. Wenn ein W-Muster identifiziert wird und der Trend steigt, werden Long-Orders ausgelöst.

  4. Wenn Sie bereits in einer Position sind, sind zusätzliche Käufe zulässig, wenn der RSI erneut unter 20 fällt.

  5. Wenn der RSI oberhalb von 75 überschreitet, bedeutet das Überkauf, die Gewinnüberschüsse werden ausgelöst.

  6. Ein Stop-Loss von 8% wird eingestellt, wenn der Verlust diesen Punkt übersteigt, wird ein Stop-Loss-Ausgang ausgelöst.

Analyse der Vorteile

  1. Die W-Musteridentifizierung erhöht die Eintrittssicherheit.

  2. Die Kombination mit Trendfiltern verhindert falsche Signale und fehlende Umkehrchancen.

  3. Der RSI kann kurzfristige Chancen rechtzeitig erfassen.

  4. Profit-taking und Stop-Loss-Punkte helfen, Risiken zu kontrollieren.

Risikoanalyse

  1. W-Mustererkennung hängt von Parameter-Tuning ab, es besteht die Gefahr, dass Formationen fehlen oder falsch identifiziert werden.

  2. Als Umkehrsignal besteht die Gefahr, eingeschlossen zu werden.

  3. RSI ist anfällig für falsche Ausbrüche, eine ordnungsgemäße Signalfilterung ist erforderlich.

  4. Wenn der Stop-Loss-Punkt zu groß ist, kann es zu vorzeitigen Stopps kommen.

Optimierungsrichtlinien

  1. Verschiedene RSI-Perioden testen, um optimale Parameter zu finden.

  2. Mehr Kriterien hinzufügen, um die Genauigkeit der Mustererkennung zu erhöhen.

  3. Kombination mit anderen Indikatoren zur Signalfilterung und Reduzierung falscher Trades.

  4. Dynamische Anpassung der Stop-Loss-Niveaus zur Optimierung der Stop-Loss-Strategie.

  5. Optimierung der Gewinnstrategie zur Verlängerung der Haltedauer bei gleichzeitiger Gewinnsicherung.

Zusammenfassung

Diese Strategie nutzt RSI W-Muster für effiziente Umkehr-Breakout-Handel. Aber weitere Parameteroptimierung und Hinzufügen anderer technischer Indikatoren für Signalfilterung kann die Strategie Stabilität und Rentabilität verbessern.


/*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 )



Mehr