Estrategia ADX + RSI


Fecha de creación: 2023-09-27 16:27:39 Última modificación: 2023-09-27 16:27:39
Copiar: 0 Número de Visitas: 2113
1
Seguir
1628
Seguidores

Descripción general

Esta es una estrategia de seguimiento de tendencias que combina los indicadores ADX y RSI. La estrategia utiliza el RSI para determinar el exceso de compra y venta para emitir señales de comercio, mientras que el ADX determina la tendencia del mercado y filtra las transacciones que no son evidentes, lo que puede evitar la trampa de los mercados convulsos.

Principio de estrategia

  1. El RSI de 7 períodos para determinar sobrecompra y sobreventa
  • RSI por debajo de 30 es considerado como una venta excesiva
  • El RSI es considerado sobrecomprado cuando está por encima de 70.
  1. El uso de ADX para juzgar tendencias
  • ADX por encima de 30 dice que la tendencia es clara
  • El ADX bajo 30 es un indicador de tendencia baja.
  1. Reglas de ingreso
  • Cuando el RSI está por debajo de 30 y el ADX está por encima de 30
  • Hacer un descuento cuando el RSI es superior a 70 y el ADX es superior a 30
  1. Cancelación de pérdidas
  • Hay una opción de parada de pérdidas, se puede elegir el cierre de parada de pérdidas o el cierre de parada de pérdidas por oscilación
  • El método de cierre de pérdidas es basado en el precio de cierre
  • El stop loss de oscilación se basa en el punto más alto y más bajo de la fluctuación reciente de los precios

Análisis de las ventajas

  1. El RSI es un indicador eficaz para determinar el punto de sobrecompra y sobreventa y reducir las trampas de compra y venta

  2. El indicador ADX puede filtrar las tendencias que no son evidentes, evitando quedar atrapado en situaciones de crisis

  3. Opciones de suspensión de pérdidas para un mejor control de riesgos

  4. Las estrategias son sencillas, fáciles de entender, implementadas y adecuadas para los principiantes.

  5. Hay mucho espacio para optimizar los parámetros de la estrategia, que se pueden optimizar mediante el ajuste de parámetros como el ciclo RSI, el intervalo de sobreventa y sobreventa y el ciclo de suavización del ADX.

Análisis de riesgos

  1. El RSI está en riesgo de reajuste, con señales de sobreventa y sobreventa que podrían dar lugar a reajustes y reveses.

  2. El ADX considera que la tendencia está rezagada y podría haber perdido el punto de inflexión

  3. El establecimiento de puntos de parada no razonables puede generar pérdidas

  4. La estrategia es sencilla, con riesgo de sobre-optimización

  5. Optimización de parámetros para obtener mejores resultados

Dirección de optimización

  1. Optimización de los parámetros del RSI, ajuste de las franjas de sobreventa y sobreventa para encontrar la mejor combinación de parámetros

  2. Se puede probar el ADX de diferentes períodos para encontrar los parámetros que mejor juzgan la tendencia

  3. Puede probar diferentes métodos de stop loss para encontrar la configuración que mejor se adapte a la estrategia

  4. Se puede agregar un indicador de filtración de tendencias para evitar el comercio a la baja

  5. Se puede combinar con otros indicadores para que la estrategia sea más ventajosa

Resumir

Esta estrategia integra las ventajas de los dos indicadores clásicos RSI y ADX, que pueden detectar tendencias de manera efectiva y evitar las sacudidas, es una estrategia de seguimiento de tendencias simple y práctica. La estrategia tiene un gran espacio para optimizar y puede obtener mejores resultados ajustando la combinación de parámetros. En general, la estrategia es adecuada para los principiantes en el aprendizaje de estrategias de algoritmos de negociación, y también puede integrarse como módulo en sistemas de estrategias más complejos.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-19 00:00:00
end: 2023-09-26 00:00:00
period: 15m
basePeriod: 5m
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/
// © tweakerID

// This is a strategy that uses the 7 Period RSI to buy when the indicator is shown as oversold (OS) and sells when 
// the index marks overbought (OB). It also uses the ADX to determine whether the trend is ranging or trending
// and filters out the trending trades. Seems to work better for automated trading when the logic is inversed (buying OB 
// and selling the OS) wihout stop loss.

//@version=4
strategy("ADX + RSI Strat", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.04, calc_on_every_tick=false)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))


//SL & TP Inputs
i_SL=input(false, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.2, title="SL Expander")
i_TPExpander=input(defval=0, step=.2, title="TP Expander")
i_reverse=input(true, title="Reverse Trades")

//SL & TP Calculations
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)
bought=strategy.position_size != strategy.position_size[1]
LSL=valuewhen(bought, SwingLow, 0)-((valuewhen(bought, atr(14), 0))*i_SLExpander)
SSL=valuewhen(bought, SwingHigh, 0)+((valuewhen(bought, atr(14), 0))*i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))+((valuewhen(bought, atr(14), 0))*i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0)-strategy.position_avg_price)-((valuewhen(bought, atr(14), 0))*i_TPExpander)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? LSL : isshort ? SSL : na
TP= islong ? lTP : isshort ? sTP : na

//RSI Calculations
RSI=rsi(close, 7)
OS=input(30, step=5)
OB=input(80, step=5)

//ADX Calculations
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
adxlevel=input(30, step=5)


//Entry Logic
BUY = sig < adxlevel and (RSI < OS) 
SELL = sig < adxlevel and (RSI > OB) 

//Entries
strategy.entry("long", strategy.long, when=i_reverse?SELL:BUY)
strategy.entry("short", strategy.short, when=not i_reverse?SELL:BUY)
//Exits
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, color=color.green, title="Bullish Setup")
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, color=color.red, title="Bearish Setup")