Esta estrategia se basa en el patrón en forma de V formado por el indicador RSI, combinado con filtros EMA, para desarrollar una estrategia comercial rentable a corto plazo confiable.
Esta estrategia integra el filtro EMA y el juicio de patrones en forma de RSI V para formar una estrategia de trading a corto plazo confiable. Puede aprovechar eficazmente las oportunidades de rebote cuando se sobreventa. Con la optimización continua de parámetros y modelos, la mejora de los mecanismos de stop loss, esta estrategia puede mejorarse aún más en estabilidad y rentabilidad.
/*backtest start: 2023-12-12 00:00:00 end: 2024-01-11 00:00:00 period: 1h 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("RSI V Pattern", overlay=true) strategy(title="RSI V Pattern", overlay=false ) //Strategy Rules //ema20 is above ema50 --- candles are colored green on the chart //RSI value sharply coming up which makes a V shape , colored in yellow on the chart //RSI V pattern should occur from below 30 len = input(title="RSI Period", minval=1, defval=5) stopLoss = input(title="Stop Loss %", minval=1, defval=8) myRsi = rsi(close,len) longEmaVal=ema(close,50) shortEmaVal=ema(close,20) //plot emas //plot(longEmaVal, title="Long EMA" ,linewidth=2, color=color.orange, trackprice=true) //plot(shortEmaVal, title="Short EMA" ,linewidth=2, color=color.green, trackprice=true) longCondition = ema(close,20)>ema(close,50) and (low[1]<low[2] and low[1]<low[3]) and (myRsi>myRsi[1] and myRsi>myRsi[2] ) and crossover(myRsi,30) // ( and myRsi<60) //(myRsi<60 and myRsi>30) and myRsi>myRsi[1] and (myRsi[1]<myRsi[2] or myRsi[1]<myRsi[3]) and (myRsi[2]<30) and (myRsi[3]<30 and myRsi[4]>=30) barcolor(shortEmaVal>longEmaVal?color.green:color.red) //longCondition = crossover(sma(close, 14), sma(close, 28)) barcolor(longCondition?color.yellow:na) strategy.entry("RSI_V_LE", strategy.long, when=longCondition ) //stoploss value at 10% stopLossValue=strategy.position_avg_price - (strategy.position_avg_price*stopLoss/100) //stopLossValue=valuewhen(longCondition,low,3) //takeprofit at RSI highest reading //at RSI75 move the stopLoss to entry price moveStopLossUp=strategy.position_size>0 and crossunder(myRsi,70) barcolor(moveStopLossUp?color.blue:na) stopLossValue:=crossover(myRsi,70) ? strategy.position_avg_price:stopLossValue //stopLossValue:=moveStopLossUp?strategy.position_avg_price:stopLossValue rsiPlotColor=longCondition ?color.yellow:color.purple rsiPlotColor:= moveStopLossUp ?color.blue:rsiPlotColor plot(myRsi, title="RSI", linewidth=2, color=rsiPlotColor) //longCondition?color.yellow:#8D1699) hline(50, title="Middle Line", linestyle=hline.style_dotted) obLevel = hline(75, title="Overbought", linestyle=hline.style_dotted) osLevel = hline(25, title="Oversold", linestyle=hline.style_dotted) fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90) //when RSI crossing down 70 , close 1/2 position and move stop loss to average entry price strategy.close("RSI_V_LE", qty=strategy.position_size*1/2, when=strategy.position_size>0 and crossunder(myRsi,70)) //when RSI reaches high reading 90 and crossing down close 3/4 position strategy.close("RSI_V_LE", qty=strategy.position_size*3/4, when=strategy.position_size>0 and crossunder(myRsi,90)) //close everything when Rsi goes down below to 10 or stoploss hit //just keeping RSI cross below 10 , can work as stop loss , which also keeps you long in the trade ... however sharp declines could make large loss //so I combine RSI goes below 10 OR stoploss hit , whichever comes first - whole posiition closed longCloseCondition=crossunder(myRsi,10) or close<stopLossValue strategy.close("RSI_V_LE", qty=strategy.position_size,when=longCloseCondition )