Estrategia de negociación de cruces ADX


Fecha de creación: 2023-12-08 15:49:12 Última modificación: 2023-12-08 15:49:12
Copiar: 0 Número de Visitas: 961
1
Seguir
1621
Seguidores

Estrategia de negociación de cruces ADX

Descripción general

Esta estrategia combina el uso de un indicador de movimiento de la media del índice ((ADX) y un indicador de movimiento hacia arriba ((DI+) para determinar la dirección y la tendencia del mercado, mientras que el uso de promedios móviles rápidos y lentos para determinar la dirección de las operaciones y el tiempo de tenencia, pertenece a la estrategia de comercio de seguimiento de tendencias. Esta estrategia puede capturar eficazmente los puntos de inflexión de la línea media corta y funciona mejor en mercados con baja volatilidad y tendencia evidente.

El principio

La lógica central de la estrategia es que se genera una señal de compra cuando la línea +DI rompe el ADX desde abajo y una señal de venta cuando la línea +DI se rompe el ADX desde arriba. Por lo tanto, la estrategia depende de la intersección entre los indicadores de DI y ADX para determinar la tendencia del mercado y el punto de reversión. Al mismo tiempo, la relación de la línea rápida y media se utiliza para determinar la tendencia del mercado en general y solo se considera la generación de una señal de negociación cuando el EMA rápido es superior al EMA lento.

En concreto, una señal de compra se emite cuando se cumplen las siguientes condiciones: 1, el EMA rápido es mayor que el EMA lento 2 , la línea DI + se rompe desde abajo en la línea ADX 3 El ADX está por debajo del umbral de 30

La señal de venta se emite cuando se cumplen las siguientes condiciones: 1 ADX por encima del umbral 30 La línea DI + 2 cae desde arriba hacia abajo en la línea ADX

La estrategia también incluye la lógica de stop loss, en la que se retiran todas las posiciones cuando el precio está por debajo del precio de stop loss.

Las ventajas

Esta estrategia, combinada con DI, ADX y indicadores de la línea media, es eficaz para determinar el punto de inflexión de la tendencia del mercado. Tiene las siguientes ventajas:

  1. Utiliza los indicadores DI y ADX para determinar las señales de cambio de tendencia y ubicar con precisión los puntos de entrada y salida
  2. El sistema de filtración EMA ofrece un análisis rápido de las grandes tendencias para evitar transacciones erróneas
  3. Utilice el valor de ADX para determinar si la tendencia es fuerte o débil, y negocie solo cuando la tendencia es débil, evitando el riesgo de una falsa ruptura
  4. Adherirse al mecanismo de detención de pérdidas para controlar el riesgo de bajada
  5. Las condiciones de entrada son estrictas, para evitar el riesgo de comprar y vender agiri.
  6. Condiciones de salida claras, tiempo de parada y parada

El riesgo

La estrategia también tiene algunos riesgos a tener en cuenta:

  1. El ADX está rezagado y puede haber perdido el mejor momento para que el precio cambie
  2. Los indicadores ADX y DI generan más señales erróneas cuando los mercados están más agitados
  3. La configuración incorrecta de la línea media rápida puede causar oportunidades de negociación perdidas o señales de filtración erróneas
  4. El precio de parada es demasiado flexible para controlar el riesgo de manera efectiva.

Estos riesgos pueden ser mejorados mediante la optimización de los parámetros de ADX y de la línea media, el ajuste de los niveles de stop loss y la combinación de señales de confirmación de otros indicadores.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más:

  1. Se puede probar ADX con diferentes períodos de longitud para encontrar la mejor combinación de parámetros
  2. Se pueden agregar otros indicadores como el RSI, el Brin y otros para confirmar las señales de negociación
  3. Puede buscar automáticamente combinaciones de parámetros y reglas de transacción basadas en algoritmos de aprendizaje automático
  4. Se puede ajustar el riesgo de colisión al nivel de stop loss de forma dinámica
  5. Se pueden crear modelos de puntuación multifactorial para hacer que las reglas de entrada y salida sean más sólidas

Resumir

La estrategia de tendencia cruzada de ADX es más estable en general y puede capturar el espacio de reversión de manera efectiva antes de la oscilación, pero se debe tener en cuenta el control del riesgo. Se puede obtener un mejor rendimiento ajustado al riesgo mediante la configuración de parámetros optimizados y reglas estrictas de entrada y parada.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © mohanee

//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00


strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)

len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1)   //


TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange

SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)

fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)




//long condition
longCondition=  ADX < threshold  and crossover(DIPlus,ADX)  and fastEmaVal > slowEmaVal


barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ADXLE", long=true,  when= longCondition  and strategy.position_size<1) 

barcolor(strategy.position_size>1 ? color.blue: na)
bgcolor(strategy.position_size>1 ? color.blue: na)



//Add
strategy.entry(id="ADXLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ADXLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss


//exit condition
exitCondition=  ADX > threshold  and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll",    qty=strategy.position_size ,   when= exitCondition)   //close all