Estrategia de seguimiento bidireccional

El autor:¿ Qué pasa?, Fecha: 2023-12-18 10:47:46
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

  1. 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.

  2. 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.

  3. Los indicadores direccionales DI+ y DI- representan la fuerza de la tendencia alcista y la tendencia bajista respectivamente.

  4. 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.

Análisis de ventajas

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.

Análisis de riesgos

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.

Direcciones de optimización

Las principales formas de optimizar esta estrategia incluyen:

  1. Ajusta el período de activación de HiLo y los niveles de activación para equilibrar los riesgos y el tiempo.

  2. Ajustar el período y el umbral de ADX para equilibrar la calidad y la frecuencia de la señal.

  3. Establecer umbrales separados para DI+ y DI- para dar cabida a las diferencias entre tendencias alcistas y descendentes.

  4. Añadir estrategias de stop loss con niveles de stop loss para controlar la pérdida de una sola operación.

  5. Combinar con otros indicadores auxiliares para mejorar la estabilidad general.

Conclusión

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)


Más.