RSI W Pattern Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-17 18:24:17
Tag:

Gambaran umum

Strategi ini mengidentifikasi pola W pada indikator RSI dikombinasikan dengan kondisi tren untuk menerapkan operasi low-buy-high-sell breakout.

Logika Strategi

  1. Mengidentifikasi pola W menggunakan RSI ((5) untuk menemukan peluang pembelian potensial. Pola W yang muncul di zona oversold menunjukkan pembalikan yang akan datang.

  2. EMA20 melintasi di atas EMA50 menentukan tren naik, memberikan bias arah.

  3. Ketika pola W diidentifikasi dan tren naik, pesanan panjang dipicu.

  4. Jika sudah berada dalam posisi, pembelian tambahan diizinkan jika RSI melintasi di bawah 20 lagi.

  5. Ketika RSI melintasi di atas 75, itu menunjukkan kondisi overbought, mengambil keuntungan keluar dipicu.

  6. Jika kerugian melebihi titik ini, stop loss exit dipicu.

Analisis Keuntungan

  1. Identifikasi pola W meningkatkan kepastian masuk.

  2. Menggabungkan dengan filter tren menghindari sinyal palsu dan kehilangan peluang pembalikan.

  3. RSI (5) dapat menangkap peluang jangka pendek tepat waktu.

  4. Mengambil keuntungan dan titik stop loss membantu mengendalikan risiko.

Analisis Risiko

  1. Pengakuan pola W tergantung pada pengaturan parameter, ada risiko formasi yang hilang atau salah diidentifikasi.

  2. Sebagai sinyal pembalikan, ada risiko terperangkap.

  3. RSI rentan terhadap kebocoran palsu, penyaringan sinyal yang tepat diperlukan.

  4. Jika titik stop loss terlalu luas, stop prematur mungkin terjadi.

Arahan Optimasi

  1. Uji periode RSI yang berbeda untuk menemukan parameter optimal.

  2. Tambahkan lebih banyak kriteria untuk meningkatkan akurasi pengenalan pola.

  3. Gabungkan dengan indikator lain untuk menyaring sinyal dan mengurangi perdagangan yang salah.

  4. Secara dinamis menyesuaikan tingkat stop loss untuk mengoptimalkan strategi stop loss.

  5. Mengoptimalkan strategi pengambilan keuntungan untuk memperpanjang periode kepemilikan sambil memastikan profitabilitas.

Ringkasan

Strategi ini memanfaatkan pola RSI W untuk perdagangan reversal breakout yang efisien.


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



Lebih banyak