Estrategia de riesgo adaptativa basada en el cruce de tendencias de doble media móvil combinado con el filtro de impulso ADX

EMA ADX ATR DMI RR
Fecha de creación: 2025-02-18 16:21:02 Última modificación: 2025-02-18 16:21:02
Copiar: 0 Número de Visitas: 389
1
Seguir
1617
Seguidores

Estrategia de riesgo adaptativa basada en el cruce de tendencias de doble media móvil combinado con el filtro de impulso ADX

Descripción general

La estrategia es un sistema de negociación que combina un juicio de tendencia de doble línea, un filtro de movimiento de ADX y una gestión de riesgo adaptativa. La estrategia utiliza una media móvil de índice de 50 y 200 ciclos (EMA) como base para el juicio de tendencia, confirma la dinámica a través de los indicadores ADX y DMI y ajusta los objetivos de parada y ganancias según la dinámica de ATR.

Principio de estrategia

La lógica central de la estrategia se divide en tres partes:

  1. Juzga la tendencia: utiliza la relación de posición de los EMA de 50 y 200 para determinar la dirección de la tendencia actual, donde EMA50 es una tendencia alcista por encima de EMA200 y viceversa una tendencia descendente.
  2. Confirmación de la dinámica: Confirma la intensidad de la tendencia con los indicadores ADX y DMI, requiere que ADX sea mayor que el umbral establecido (default 25) y que DI+ sea mayor que DI- para confirmar la tendencia alcista y viceversa para confirmar la tendencia bajista.
  3. Tiempo de entrada: después de la confirmación de la tendencia, el precio se cruza con la EMA50 como una señal de entrada concreta, el cruce hacia arriba hace más, el cruce hacia abajo hace menos.

Ventajas estratégicas

  1. Mecanismo de confirmación múltiple: reduce las falsas señales mediante la confirmación múltiple de tendencias y dinámicas.
  2. Gestión de riesgo adaptativa: utiliza ATR para ajustar dinámicamente la posición de parada para que la gestión de riesgos se ajuste mejor a las características de la volatilidad del mercado.
  3. Optimización de la relación riesgo-beneficio: Asegúrese de que las expectativas de ganancias de cada transacción sean razonables mediante la predicción de la relación riesgo-beneficio.
  4. Soporte de visualización: La estrategia ofrece una representación gráfica completa, incluyendo líneas de tendencia, posiciones de stop loss y señales de señal de negociación.

Riesgo estratégico

  1. Retardo en el cambio de tendencia: debido al uso de líneas medias de períodos más largos, puede haber un cierto retraso en el cambio de tendencia.
  2. No se aplica a los mercados de oscilación: en los mercados de oscilación horizontal, puede generarse una señal falsa frecuente.
  3. Sensibilidad de los parámetros: la eficacia de la estrategia es sensible a la configuración de los parámetros, y puede ser necesario ajustarlos en diferentes entornos de mercado.

Dirección de optimización de la estrategia

  1. Adaptación al entorno del mercado: se puede agregar lógica de juicio al entorno del mercado, para ajustar dinámicamente los parámetros en diferentes entornos de fluctuación.
  2. Mejora de la filtración de señales: Se puede introducir el volumen de tráfico u otros indicadores técnicos como condición de filtración auxiliar.
  3. Optimización de la detención de pérdidas: se puede considerar el uso de estrategias de detención de pérdidas de seguimiento o de detención de pérdidas combinadas para aumentar la flexibilidad de la gestión de riesgos.
  4. Construcción de almacenes por lotes: Se puede implementar un mecanismo de entrada y salida por lotes, optimizando la administración de fondos.

Resumir

Se trata de una estrategia de seguimiento de tendencias estructurada y con claridad lógica, que permite una generación de señales de negociación y un control de riesgos más fiables mediante el uso de múltiples indicadores técnicos. La estrategia es altamente escalable y tiene un gran espacio de optimización.

Código Fuente de la Estrategia
/*backtest
start: 2025-02-10 00:00:00
end: 2025-02-17 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("XAUUSD 15m Trend Strategy", overlay=true, margin_long=100, margin_short=100)

// Input parameters
emaFast = input.int(50, "Fast EMA Period", minval=1)
emaSlow = input.int(200, "Slow EMA Period", minval=1)
adxThreshold = input.int(25, "ADX Threshold", minval=1)
lookback = input.int(5, "Swing Lookback Period", minval=1)
riskReward = input.float(1.5, "Risk Reward Ratio", minval=1.0)

// Calculate indicators
ema50 = ta.ema(close, emaFast)
ema200 = ta.ema(close, emaSlow)
[diPlus, diMinus, adx] = ta.dmi(14, 14)
atr = ta.atr(14)

// Trend conditions
uptrend = ema50 > ema200 and adx >= adxThreshold and diPlus > diMinus
downtrend = ema50 < ema200 and adx >= adxThreshold and diMinus > diPlus

// Entry conditions
longCondition = uptrend and ta.crossover(close, ema50)
shortCondition = downtrend and ta.crossunder(close, ema50)

// Calculate risk levels
longStop = ta.lowest(low, lookback) - atr * 0.5
longProfit = close + (close - longStop) * riskReward
shortStop = ta.highest(high, lookback) + atr * 0.5
shortProfit = close - (shortStop - close) * riskReward

// Execute trades
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=longStop, limit=longProfit)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=shortStop, limit=shortProfit)

// Plotting
plot(ema50, "EMA 50", color=color.blue)
plot(ema200, "EMA 200", color=color.orange)
plot(strategy.position_size > 0 ? longStop : na, "Long Stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size > 0 ? longProfit : na, "Long Target", color=color.green, style=plot.style_linebr)
plot(strategy.position_size < 0 ? shortStop : na, "Short Stop", color=color.red, style=plot.style_linebr)
plot(strategy.position_size < 0 ? shortProfit : na, "Short Target", color=color.green, style=plot.style_linebr)

// Signal markers
plotshape(longCondition, "Buy Signal", shape.triangleup, location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, "Sell Signal", shape.triangledown, location.abovebar, color=color.red, size=size.small)