Estrategia de negociación de seguimiento del impulso de cuatro factores basada en ADX, BB %B, AO y EMA

El autor:¿ Qué pasa?, Fecha: 2023-12-11 16:24:11
Las etiquetas:

img

##Visión general Esta estrategia se llama Estrategia de seguimiento de impulso de cuatro factores. Integra el índice de movimiento direccional promedio (ADX) para determinar la dirección de la tendencia, el porcentaje de bandas de Bollinger B (BB % B) para juzgar la fuerza relativa de las acciones, el oscilador impresionante (AO) para determinar el impulso y los promedios móviles exponenciales (EMA) de diferentes ciclos para juzgar las posiciones largas y cortas, logrando un seguimiento dinámico de los precios de las acciones y persiguiendo acciones fuertes y evitando las débiles.

## Principio de estrategia
La estrategia utiliza cuatro indicadores técnicos diferentes para determinar los puntos de entrada y salida.

Condición de entrada larga: la EMA de 5 días se cruza por encima de la EMA de 21 días, la EMA de 50 días se cruza por encima de la EMA de 200 días, BB %B es mayor que la línea de sobrecompra establecida, AO es mayor que el valor positivo establecido y ADX es mayor que el valor establecido.

Condición de entrada corta: la EMA de 5 días se cruza por debajo de la EMA de 21 días, la EMA de 50 días se cruza por debajo de la EMA de 200 días, BB %B es inferior a la línea de sobreventa establecida, AO es inferior al valor negativo establecido y ADX es mayor que el valor establecido.

##Análisis de ventajas La estrategia combina múltiples indicadores para determinar la dirección de la tendencia y la fuerza relativa de las acciones, que pueden filtrar eficazmente las falsas rupturas.

  1. El indicador ADX puede determinar eficazmente la existencia y la fuerza de la tendencia, evitando la apertura frecuente en un mercado de choque.

  2. El indicador BB % B evalúa si las existencias individuales se encuentran en un nivel alto o bajo, lo que puede evitar efectivamente la búsqueda de máximos y la venta de mínimos.

  3. El indicador AO determina si existe un soporte de impulso relativamente fuerte durante la compra para garantizar la eficacia de la ruptura.

  4. El indicador EMA de cruz dorada/cruz muerta combinado con el juicio de la principal dirección del mercado evita la apertura de posiciones contra la tendencia.

En resumen, esta estrategia puede controlar eficazmente los riesgos comerciales y realizar un seguimiento de las fuertes existencias en el mercado.

##Análisis de riesgos Aunque la estrategia utiliza múltiples indicadores para controlar los riesgos, todavía existen ciertos riesgos:

  1. La combinación de múltiples indicadores exponenciales es sensible a los ajustes de parámetros. Las combinaciones inapropiadas de parámetros pueden no lograr el efecto deseado.

  2. La búsqueda excesiva de impulso puede perder los puntos reales de inversión del mercado.

  3. Los indicadores como el EMA tienen un carácter retrasado y pueden no ser capaces de reflejar el impacto de eventos repentinos en el tiempo.

  4. Los grandes acontecimientos repentinos pueden causar divergencias en los indicadores.

## Dirección de optimización La estrategia también puede optimizarse en varios aspectos:

  1. Utilice el aprendizaje automático para encontrar la combinación óptima de parámetros.

  2. Añadir otros indicadores que determinan las tendencias, como el CCI y el MACD, para formar una combinación de indicadores para mejorar la precisión del juicio.

  3. Añadir estrategias de stop-loss para controlar pérdidas individuales.

  4. Establezca un tiempo de espera para evitar la avaricia excesiva.

## Resumen Esta estrategia se llama Estrategia de seguimiento de impulso de cuatro factores. Utiliza ADX, BB %B, AO y EMA cuatro indicadores para determinar los puntos de entrada y salida para rastrear dinámicamente las acciones fuertes. La estrategia puede determinar efectivamente la dirección de la tendencia y la fuerza relativa de las acciones para controlar los riesgos comerciales.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)


Más.