Стратегия прорыва модели RSI W


Дата создания: 2023-09-17 18:24:17 Последнее изменение: 2023-09-17 18:24:17
Копировать: 0 Количество просмотров: 879
1
Подписаться
1617
Подписчики

Обзор

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

Стратегический принцип

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

  2. На EMA20 появление EMA50 определяется как тенденция к росту, а вход определяется в качестве основного направления.

  3. Покупайте, когда вы обнаружите W-образный тренд.

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

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

  6. Установите точку стоп-лосса в 8%, если она превышает эту точку, то сделайте стоп-выход.

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

  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 )