Estratégia de rompimento do padrão RSI W


Data de criação: 2023-09-17 18:24:17 última modificação: 2023-09-17 18:24:17
cópia: 0 Cliques: 879
1
focar em
1617
Seguidores

Visão geral

A estratégia permite a operação de ruptura de compra e venda de baixa e alta com a identificação da forma W no indicador RSI, em combinação com os critérios de julgamento de tendência. Em comparação com o julgamento comum da zona de venda e venda de RSI, a identificação da forma W permite uma melhor localização do momento de compra.

Princípio da estratégia

  1. Usando o RSI ((5)), julgue a forma W e encontre uma oportunidade de compra potencial. Quando a forma W aparece em uma área de sobrevenda, indica uma reversão iminente.

  2. O EMA20 usa o EMA50 para julgar a tendência ascendente e a entrada geral.

  3. Quando se identifica um W e a tendência é ascendente, é feita uma compra.

  4. Se você já está posicionado, você pode aumentar a posição quando o RSI cair novamente para 20.

  5. Quando o RSI passa de 75, é uma zona de sobrecompra, para um stop-loss.

  6. Estabeleça um ponto de parada de 8% e, se a perda for superior a esse ponto, faça uma saída de parada.

Análise de vantagens

  1. Identificação de forma W aumenta a certeza de admissão.

  2. A partir da análise das tendências, os filtros são usados para avaliar sinais de inatividade e evitar a perda de oportunidades de reversão.

  3. O parâmetro RSI é definido como 5 dias para capturar oportunidades de curto prazo.

  4. O risco é controlado através da definição de um ponto de parada.

Análise de Riscos

  1. O reconhecimento de forma W depende da configuração de parâmetros, podendo ser omitido ou mal interpretado.

  2. Como um sinal de retorno, existe o risco de sermos encurralados.

  3. O RSI é propenso a falsas rupturas e deve ser filtrado adequadamente.

  4. Se o ponto de paragem for muito alto, pode ocorrer uma paragem prematura.

Direção de otimização

  1. Teste diferentes parâmetros de ciclo RSI para encontrar a combinação ideal de parâmetros.

  2. Aumentar as condições de determinação de forma e aumentar a precisão de identificação.

  3. O sistema de filtragem de sinais, em combinação com outros indicadores, reduz os erros de negociação.

  4. Ajustar dinamicamente a posição de parada e otimizar a estratégia de parada.

  5. Optimizar a estratégia de suspensão, prolongar o período de detenção com a garantia de lucro.

Resumir

A estratégia utiliza o RSI W para obter uma operação de reversão eficiente. No entanto, é necessário otimizar ainda mais a configuração de parâmetros e o filtro de sinais com outros indicadores técnicos para melhorar a estabilidade da estratégia e o nível de lucro.

Código-fonte da estratégia
/*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 )