Esta estrategia utiliza una combinación del canal de media móvil de 50 períodos, el índice direccional ADX y el índice de energía EFI para el comercio de tendencias. Cuando el índice de energía EFI muestra un inicio de tendencia, entra en el mercado durante un retroceso dentro del área del canal de 50 MA. La estrategia es adecuada para el marco de tiempo de 1 minuto.
Calcular el canal de la media móvil de 50 períodos, siendo la banda superior la media móvil de precios altos y la banda inferior la media móvil de precios bajos.
Calcular el índice direccional ADX para determinar la fuerza de la tendencia, y sólo considerar la negociación durante las tendencias fuertes (ADX>20).
Calcular los índices energéticos EFI a largo plazo (120 períodos) y a corto plazo (15 períodos) El índice a largo plazo por encima de 0 indica una tendencia general al alza en la energía, mientras que el índice a corto plazo por debajo de 0 indica una tendencia al alza a corto plazo.
Cuando los índices EFI a largo y corto plazo dan una señal de compra, y el precio retrocede al canal de 50 MA, se toma una posición larga.
Cuando los índices EFI a largo y corto plazo dan una señal de venta, y el precio retrocede al canal de 50 MA, se toma una posición corta.
Esta estrategia combina las señales de tendencia, impulso y retroceso para filtrar efectivamente la mayoría de las rupturas falsas.
El canal de 50 MA determina claramente la dirección de la tendencia principal.
El índice ADX garantiza que las operaciones solo se realicen durante tendencias claras, evitando los cambios en los mercados variados.
El índice EFI refleja las alzas de tendencia de la energía en los puntos de entrada de bajo riesgo.
Esperar a las retracciones permite mejores relaciones riesgo-recompensa.
Las combinaciones de múltiples indicadores filtran eficazmente los riesgos de ruptura falsa.
Los principales riesgos de esta estrategia son:
Las tendencias fuertes también pueden tener retrocesos más grandes, lo que requiere rangos de stop-loss más amplios.
En los mercados variados, el EFI puede dar señales falsas, lo que requiere un emparejamiento con indicadores de filtración de tendencias como el ADX.
Los retrocesos que son demasiado profundos pueden perder puntos de entrada, posiblemente requiriendo ajuste MA.
Un único instrumento de negociación no puede diversificar los riesgos sistemáticos del mercado.
Esta estrategia puede mejorarse en varios aspectos:
Prueba con más instrumentos para encontrar parámetros universales óptimos.
Añadir la obtención de ganancias a través de pérdidas de detención de seguimiento.
Optimización de parámetros de ADX, EFI y más.
Incorporar el aprendizaje automático para la detección de tendencias robustas versus fallas.
Añadir análisis de marcos de tiempo múltiples con dimensionamiento de posición entre marcos de tiempo.
Evaluar más indicadores de filtración de tendencias para mejorar la calidad de la señal.
En general, esta es una excelente estrategia de retroceso de tendencia para los principiantes, que combina las señales de tendencia, impulso y retroceso para filtrar las fallas. Con refinamientos en el stop-loss, ajuste de parámetros, marcos de tiempo y más, puede convertirse en un sistema de seguimiento de tendencia robusto. En resumen, una estrategia de trading de tendencia muy práctica y digna de investigación.
/*backtest start: 2023-08-19 00:00:00 end: 2023-09-18 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/ // © trent777brown //@version=5 // strategy("adx efi 50 ema channel, trend pullback", overlay=true, margin_long=100, margin_short=100, currency=currency.USD, initial_capital= 100000, close_entries_rule="ANY") //bollingerbands [basis, upperband, lowerband]= ta.bb(ohlc4, 50, 3) [basis2, upperband2, lowerband2]= ta.bb(ohlc4, 50, 2) psar= ta.sar(.1, .1, .09) ema50= ta.ema(hlc3, 50) ema50hi= ta.ema(high, 50) ema50lo= ta.ema(low, 50) ema18= ta.wma(hlc3, 15) wma9= ta.wma(open, 9) wma5= ta.wma(ohlc4, 5) ema34= ta.rma(hlc3, 10) [macdline, signalline, histline]= ta.macd(hlc3, 5, 34, 5) [macdline2, signalline2, histline2]= ta.macd(hlc3, 15,70, 24) [diplus, diminus, adx]= ta.dmi(20, 20) [diplus2, diminus2, adx2]= ta.dmi(12, 12) rsi= ta.rsi(hlc3, 14) rsisma= ta.sma(rsi, 10) stoch= ta.stoch(close, high, low, 21) k= ta.wma(stoch, 3) d= ta.wma(k, 3) trendline5= ta.wma(hlc3, 300) trendline9= ta.wma(open, 540) trendline18= ta.wma(open, 1080) atr=ta.atr(14) plot(psar, color=color.red, style=plot.style_circles) plot(ema50, color=color.white, linewidth=4) plot(ema50hi, color=color.yellow, linewidth=4) plot(ema50lo, color=color.yellow, linewidth=4) plot(ema34, color=color.aqua, linewidth=4) plot(wma9, color=color.gray, linewidth=4) plot(wma5, color=color.lime, linewidth=4) plot(trendline18, color=color.orange, linewidth=4) plot(upperband, color=color.navy, linewidth=4) plot(lowerband, color=color.navy, linewidth=4) plot(upperband2, color=color.navy, linewidth=4) plot(lowerband2, color=color.navy, linewidth=4) plot(trendline9, color=color.maroon, linewidth=4) plot(trendline5, color=color.yellow, linewidth=4) efi = ta.rma(ta.change(close) * volume, 15) efi2= ta.rma(ta.change(close) * volume, 120) buy= efi2 > 0 and efi < 0 and efi[1] < efi and adx >= 20 and open < ema50hi sell= efi2 < 0 and efi > 0 and efi[1] > efi and adx >= 20 and open > ema50lo //ell= rsi > 50 and ta.crossunder(wma5, wma9) and psar > high and ema18 <= ema50hi and macdline > 0 and macdline < signalline //buy= ta.crossunder(close, ema50) and rsi < 50 and adx2 < adx2[1] and k < 25 and psar > high //uy= rsi < 60 and ta.crossover(wma5, wma9) and psar < low and ema18 >= ema50 and macdline2 > 0 and diplus2 < 30 // and histline2 < 0 //buy= ema18 > ema50 and ta.crossunder(rsi, 45) and open < ema50hi and adx2[3] < adx2 and diplus2 < 25 and macdline < 0 and adx < 10 //sell= ta.crossover(close, ema50) and rsi > 50 and adx2 < adx2[1] and k > 75 and psar < low //ell= ema18 < ema50 and ta.crossover(rsi, 60) and open > ema50lo and diminus2 < 30 and macdline2 < 0 and adx2[2] < adx2 //buy sell conditions 1 //buy= ta.crossover(wma5, ema18) and ema18 > ema50lo and diplus > 22 and diminus < 22 and adx > 15 //ell= ta.crossover(psar, high) and macdline2 < signalline2 and rsi < rsisma //when conditions buytrig= ema34 >= ema50lo selltrig= ema34 <= ema50hi //strategy sl= low - atr * 8 tp= high + atr * 4 sellsl= high + atr * 8 selltp= low - atr * 4 if(buy) strategy.entry("buy", strategy.long, when= buytrig) strategy.exit("exit buy", "buy", limit= tp, stop= sl) strategy.close("close", when= ta.crossunder(ema34, ema50lo)) if(sell) strategy.entry("sell", strategy.short, when= selltrig) strategy.exit("exit sell", "sell", limit= selltp, stop= sellsl)