Стратегия прорыва RSI W Pattern

Автор:Чао Чжан, Дата: 2023-09-17 18:24:17
Тэги:

Обзор

Эта стратегия идентифицирует W-паттерны на индикаторе RSI в сочетании с условиями тренда для реализации операций с низкой покупкой-высокой продажей.

Логика стратегии

  1. Определите W-паттерны, используя RSI (), чтобы найти потенциальные возможности покупки.

  2. Пересечение EMA20 выше EMA50 определяет восходящий тренд, обеспечивая направленное уклонение.

  3. Когда выявляется W-паттерн и тренд повышается, начинаются длинные ордера.

  4. Если вы уже находитесь на позиции, дополнительные покупки разрешены, если RSI снова опустится ниже 20.

  5. Когда индекс пересекает 75 градусов, это указывает на перекупленные условия, и наступает выход из прибыли.

  6. Если убыток превышает эту точку, начинается выход с остановкой убытка.

Анализ преимуществ

  1. Идентификация паттерна W повышает уверенность в входе.

  2. Сочетание с фильтрами тренда позволяет избежать ложных сигналов и упущенных шансов на изменение.

  3. RSI ((5) может своевременно поймать краткосрочные возможности.

  4. Приобретение прибыли и остановка потерь помогают контролировать риски.

Анализ рисков

  1. При распознавании паттернов W зависит от настройки параметров, существуют риски отсутствия или неправильной идентификации образований.

  2. Как сигнал обратного движения, существует риск попасть в ловушку.

  3. RSI склонна к ложным прорывам, необходима надлежащая фильтрация сигнала.

  4. Если точка остановки потерь слишком широка, могут возникнуть преждевременные остановки.

Руководство по оптимизации

  1. Проверьте различные периоды RSI, чтобы найти оптимальные параметры.

  2. Добавьте больше критериев для повышения точности распознавания моделей.

  3. Комбинировать с другими индикаторами для фильтрации сигналов и уменьшения неправильных сделок.

  4. Динамически регулируйте уровни стоп-лосса для оптимизации стратегии стоп-лосса.

  5. Оптимизировать стратегию получения прибыли для продления периода хранения при одновременном обеспечении рентабельности.

Резюме

Эта стратегия использует модели RSI W для эффективной реверсионной торговли, но дальнейшая оптимизация параметров и добавление других технических индикаторов для фильтрации сигналов могут улучшить стабильность и прибыльность стратегии.


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



Больше