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.
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.
O EMA20 usa o EMA50 para julgar a tendência ascendente e a entrada geral.
Quando se identifica um W e a tendência é ascendente, é feita uma compra.
Se você já está posicionado, você pode aumentar a posição quando o RSI cair novamente para 20.
Quando o RSI passa de 75, é uma zona de sobrecompra, para um stop-loss.
Estabeleça um ponto de parada de 8% e, se a perda for superior a esse ponto, faça uma saída de parada.
Identificação de forma W aumenta a certeza de admissão.
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.
O parâmetro RSI é definido como 5 dias para capturar oportunidades de curto prazo.
O risco é controlado através da definição de um ponto de parada.
O reconhecimento de forma W depende da configuração de parâmetros, podendo ser omitido ou mal interpretado.
Como um sinal de retorno, existe o risco de sermos encurralados.
O RSI é propenso a falsas rupturas e deve ser filtrado adequadamente.
Se o ponto de paragem for muito alto, pode ocorrer uma paragem prematura.
Teste diferentes parâmetros de ciclo RSI para encontrar a combinação ideal de parâmetros.
Aumentar as condições de determinação de forma e aumentar a precisão de identificação.
O sistema de filtragem de sinais, em combinação com outros indicadores, reduz os erros de negociação.
Ajustar dinamicamente a posição de parada e otimizar a estratégia de parada.
Optimizar a estratégia de suspensão, prolongar o período de detenção com a garantia de lucro.
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.
/*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 )