RSI W Pattern Breakout Strategi

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

Ringkasan

Strategi ini mengenal pasti corak W pada penunjuk RSI digabungkan dengan keadaan trend untuk melaksanakan operasi pecah beli rendah-jual tinggi.

Logika Strategi

  1. Mengenali corak W menggunakan RSI ((5) untuk mencari peluang pembelian yang berpotensi. corak W yang muncul di zon oversold menunjukkan pembalikan yang akan datang.

  2. EMA20 melintasi di atas EMA50 menentukan aliran menaik, memberikan kecenderungan arah.

  3. Apabila corak W dikenal pasti dan trend naik, pesanan panjang dicetuskan.

  4. Jika sudah berada dalam kedudukan, pembelian tambahan dibenarkan jika RSI melintasi bawah 20 lagi.

  5. Apabila RSI melintasi di atas 75, ia menunjukkan keadaan overbought, mengambil keuntungan keluar dicetuskan.

  6. Stop loss 8% ditetapkan. Jika kerugian melebihi titik ini, stop loss keluar dicetuskan.

Analisis Kelebihan

  1. Pengenalan corak W meningkatkan kepastian kemasukan.

  2. Menggabungkan dengan penapis trend mengelakkan isyarat palsu dan kehilangan peluang pembalikan.

  3. RSI(5) boleh menangkap peluang jangka pendek tepat pada masanya.

  4. Mengambil keuntungan dan titik berhenti kerugian membantu mengawal risiko.

Analisis Risiko

  1. Pengiktirafan corak W bergantung pada penyesuaian parameter, terdapat risiko kehilangan atau salah mengenal pasti formasi.

  2. Sebagai isyarat pembalikan, ada risiko terperangkap.

  3. RSI cenderung untuk pecah palsu, penapisan isyarat yang betul diperlukan.

  4. Jika titik stop loss terlalu luas, hentian awal mungkin berlaku.

Arahan pengoptimuman

  1. Uji tempoh RSI yang berbeza untuk mencari parameter optimum.

  2. Tambah lebih banyak kriteria untuk meningkatkan ketepatan pengenalan corak.

  3. Gabungkan dengan penunjuk lain untuk menapis isyarat dan mengurangkan perdagangan yang salah.

  4. Dinamis menyesuaikan tahap stop loss untuk mengoptimumkan strategi stop loss.

  5. Mengoptimumkan strategi mengambil keuntungan untuk memanjangkan tempoh pegangan sambil memastikan keuntungan.

Ringkasan

Strategi ini menggunakan corak RSI W untuk perdagangan pecah pembalikan yang cekap. Tetapi pengoptimuman parameter lanjut dan penambahan penunjuk teknikal lain untuk penapisan isyarat dapat meningkatkan kestabilan dan keuntungan strategi.


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