Esta estrategia combina indicadores de impulso e indicadores de seguimiento bidireccionales para capturar señales de ruptura en tendencias fuertes para el seguimiento de tendencias.
El indicador HiLo Activator calcula el precio del punto medio utilizando el punto medio del máximo más alto y el mínimo más bajo. Cuando los precios rompen por encima del punto medio, se genera una señal de compra. Cuando los precios se rompen por debajo del punto medio, se genera una señal de venta.
El índice direccional promedio (ADX) se utiliza para medir la fuerza de la tendencia. Cuanto mayor sea el valor de ADX, más fuerte será la tendencia.
Los indicadores direccionales DI+ y DI- representan la fuerza de la tendencia alcista y la tendencia bajista respectivamente.
Las señales de compra se generan cuando los precios se rompen por encima del punto medio, ADX es superior al umbral y DI + es superior al umbral.
Esta estrategia combina las ventajas de los indicadores de impulso y de seguimiento de tendencias para captar las rupturas tempranas y seguir de cerca las tendencias.
En comparación con el uso de indicadores de impulso solos, esta estrategia agrega la evaluación de la fuerza de la tendencia para filtrar las señales y mejorar la rentabilidad.
En general, la estrategia puede seguir las tendencias sin problemas, entrar y salir a tiempo y evitar quedarse atrapado en las consolidaciones al tiempo que reduce las pérdidas por reversiones de tendencia.
Esta estrategia tiene algunos riesgos de reversión temporal de los precios que generan señales erróneas.
Para reducir los riesgos, ajuste los parámetros del activador de HiLo para aumentar el rango de escape.
Los usuarios también deben tener en cuenta las diferencias entre productos y entornos de mercado.
Las principales formas de optimizar esta estrategia incluyen:
Ajusta el período de activación de HiLo y los niveles de activación para equilibrar los riesgos y el tiempo.
Ajustar el período y el umbral de ADX para equilibrar la calidad y la frecuencia de la señal.
Establecer umbrales separados para DI+ y DI- para dar cabida a las diferencias entre tendencias alcistas y descendentes.
Añadir estrategias de stop loss con niveles de stop loss para controlar la pérdida de una sola operación.
Combinar con otros indicadores auxiliares para mejorar la estabilidad general.
Esta estrategia considera tanto el impulso como los indicadores de seguimiento de tendencias para generar señales durante tendencias fuertes. Tiene la ventaja de seguir las tendencias sin problemas y de cerca, adecuado para capturar las oportunidades de tendencia tempranas. También tiene capacidades razonables de control de riesgos para reducir las pérdidas por señales y frenos erróneos. Con el ajuste de parámetros y las adiciones de stop loss, puede lograr un rendimiento constante. Como una estrategia de seguimiento de tendencias versátil que se adapta a diferentes productos y mercados, merece buena atención y aplicación de los operadores de cantidad.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true) // Parameters for the HiLo Activator length_ha = input(14, title="HiLo Activator Period") offset_ha = input(0, title="Offset") trigger_ha = input(1, title="Trigger for Buy/Sell") // Parameters for ADX adx_length = input(14, title="ADX Period", minval=1) adx_threshold = input(25, title="ADX Threshold") di_threshold = input(50, title="DI Threshold") // Parameter for choosing the number of candles for backtest backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1) // Function to get backtest data getBacktestData() => var float data = na if bar_index >= backtest_candles data := security(syminfo.tickerid, "D", close[backtest_candles]) data // HiLo Activator calculations ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2 // ADX calculations trh = high - high[1] trl = low[1] - low tr = max(trh, trl) atr = sma(tr, adx_length) plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0 minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0 smoothed_plus_dm = sma(plus_dm, adx_length) smoothed_minus_dm = sma(minus_dm, adx_length) di_plus = 100 * (smoothed_plus_dm / atr) di_minus = 100 * (smoothed_minus_dm / atr) dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus) adx = sma(dx, adx_length) // Buy and Sell signals based on HiLo Activator and ADX signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold // Plot HiLo Activator and ADX plot(ha, color=color.blue, title="HiLo Activator") plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset") plot(adx, color=color.purple, title="ADX") // Backtest strategy strategy.entry("Buy", strategy.long, when = signalLong) strategy.entry("Sell", strategy.short, when = signalShort) strategy.close("Buy", when = signalShort) strategy.close("Sell", when = signalLong) // Accuracy percentage var accuracy = 0.0 var totalTrades = 0 var winningTrades = 0 if (signalLong or signalShort) totalTrades := totalTrades + 1 if (signalLong and (not na(signalLong[1]) and (not signalLong[1]))) winningTrades := winningTrades + 1 if (signalShort and (not na(signalShort[1]) and (not signalShort[1]))) winningTrades := winningTrades + 1 accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0 // Plot accuracy percentage on the chart plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)