Esta estrategia permite la identificación de las formas de W en el indicador RSI, en combinación con las condiciones de juicio de tendencia, para lograr operaciones de ruptura de compra y venta. En comparación con los juicios comunes de las zonas de venta y compra de RSI, la identificación de las formas de W permite ubicar con mayor claridad el momento de compra.
Utiliza el RSI ((5) para juzgar la forma W y encontrar oportunidades potenciales de compra. Cuando la forma W aparece en una zona de sobreventa, indica una reversión inminente.
El EMA20 utiliza el EMA50 como un criterio de tendencia al alza y como un criterio de entrada.
Cuando se identifica una forma W y la tendencia es ascendente, se compra.
Si ya tiene una posición, puede aumentar la posición cuando el RSI baje a 20 nuevamente.
Cuando el RSI cruza los 75, esto significa que está en una zona de sobreventa, y se realiza una salida de parada.
Establezca un punto de stop loss del 8% y realice una salida de stop loss si la pérdida supera ese punto.
La identificación de la forma W aumenta la certeza de la admisión.
En combinación con las tendencias, los filtros de señales no son efectivos y no se pierden oportunidades de reversión.
El parámetro RSI está configurado para capturar la oportunidad de una línea corta en 5 días.
Establece un punto de parada para controlar el riesgo.
La identificación de la forma W depende de la configuración de los parámetros, lo que puede ocasionar un error en el reconocimiento o en el juicio de la forma.
Como señal de cambio de rumbo, existe el riesgo de ser emboscado.
El RSI es propenso a falsas rupturas, por lo que las señales deben filtrarse adecuadamente.
Si el límite de pérdida es demasiado alto, puede que se detenga prematuramente.
Prueba diferentes parámetros del ciclo RSI para encontrar la combinación óptima de parámetros.
Aumentar las condiciones de determinación de la forma y mejorar la precisión de la identificación.
Se filtran las señales en combinación con otros indicadores para reducir las transacciones erróneas.
Ajuste dinámico de las posiciones de stop loss y optimización de las estrategias de stop loss.
Optimización de la estrategia de suspensión, prolongación del período de tenencia con la garantía de beneficios.
La estrategia utiliza la forma RSI W para lograr una operación de reversión de ruptura muy eficiente. Sin embargo, se requiere una optimización adicional de la configuración de los parámetros y un filtro de la señal complementado con otros indicadores técnicos para mejorar la estabilidad de la estrategia y el nivel de ganancias.
/*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 )