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.
El RSI es un indicador eficaz para determinar el punto de sobrecompra y sobreventa y reducir las trampas de compra y venta
El indicador ADX puede filtrar las tendencias que no son evidentes, evitando quedar atrapado en situaciones de crisis
Opciones de suspensión de pérdidas para un mejor control de riesgos
Las estrategias son sencillas, fáciles de entender, implementadas y adecuadas para los principiantes.
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.
El RSI está en riesgo de reajuste, con señales de sobreventa y sobreventa que podrían dar lugar a reajustes y reveses.
El ADX considera que la tendencia está rezagada y podría haber perdido el punto de inflexión
El establecimiento de puntos de parada no razonables puede generar pérdidas
La estrategia es sencilla, con riesgo de sobre-optimización
Optimización de parámetros para obtener mejores resultados
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
Se puede probar el ADX de diferentes períodos para encontrar los parámetros que mejor juzgan la tendencia
Puede probar diferentes métodos de stop loss para encontrar la configuración que mejor se adapte a la estrategia
Se puede agregar un indicador de filtración de tendencias para evitar el comercio a la baja
Se puede combinar con otros indicadores para que la estrategia sea más ventajosa
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.
/*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")