Estrategia de previsión de tendencias adaptativas de varios ciclos

El autor:¿ Qué pasa?, Fecha: 2024-02-01 14:34:38
Las etiquetas:

img

Resumen general

Esta estrategia utiliza medias móviles adaptativas de varios ciclos e indicadores de evaluación de riesgos en zigzag, combinados con puntos de fase en la operación del mercado, para predecir tendencias y señales comerciales de salida.

Principio de la estrategia

La lógica central de la estrategia se divide en dos líneas principales. La primera línea principal utiliza promedios móviles adaptativos nAMA con diferentes parámetros para construir un sistema de juicio de filtrado de múltiples ciclos. La segunda línea principal utiliza el sistema de evaluación de riesgos en zigzag con diferentes parámetros para construir un sistema de evaluación de riesgos de múltiples ciclos. Finalmente, las dos líneas principales se combinan. Cuando la línea de ciclo corto excede la línea de ciclo largo, se genera una señal de compra. Cuando la línea de ciclo corto está por debajo de la línea de ciclo largo, se genera una señal de venta.

Específicamente, la primera línea principal establece promedios móviles adaptativos de 10 ciclos y 4, 24 parámetros respectivamente. La segunda línea principal establece líneas de evaluación de riesgo en zigzag de 7 ciclos y 4, 300 parámetros respectivamente. Finalmente, la línea de 10 ciclos en la primera línea principal se compara con la línea de 31 ciclos en la segunda línea principal para formar una señal comercial. Cuando la línea de 10 ciclos se eleva por encima de la línea de 31 ciclos, se genera una señal de compra. Cuando la línea de 10 ciclos cae por debajo de la línea de 31 ciclos, se genera una señal de venta.

Además, la estrategia también establece un módulo de confirmación de volumen-precio. Las señales de negociación solo son válidas cuando el volumen de negociación es mayor que el volumen promedio de negociación de 6 ciclos. Esto puede filtrar señales falsas hasta cierto punto. Finalmente, la estrategia dibuja puntos de fase de diferentes niveles de ciclo como señales de referencia.

Análisis de las ventajas estratégicas

La mayor ventaja de esta estrategia es la aplicación de estructuras adaptativas multicíclicas, que pueden ajustar de forma adaptativa los ciclos de acuerdo con las condiciones del mercado para ajustar dinámicamente los ciclos.

Además, la estrategia utiliza un filtrado conjunto de varios ciclos de sistemas de evaluación de riesgos en zigzag para controlar eficazmente los riesgos comerciales y evitar el establecimiento de posiciones durante las fases de alto riesgo.

Análisis de los riesgos estratégicos

El mayor riesgo de esta estrategia es que requiere el mismo juicio direccional de múltiples líneas de ciclo, por lo que la capacidad de capturar mercados de inversión a corto plazo es pobre.

Además, la fase del ciclo principal del sistema de evaluación de riesgos de media móvil adaptativa y zigzag es relativamente corta en comparación con el mercado en general, y existe cierto retraso debido a la conducción de niveles más largos.

Direcciones para la optimización de la estrategia

  1. Acortar los parámetros principales del ciclo de la media móvil adaptativa y la línea de evaluación del riesgo en zigzag a 5 ciclos y 20 ciclos para aumentar la captura de la inversión de mercado a corto plazo.

  2. Aumentar los parámetros de los ciclos principales a 20 ciclos y a 50 ciclos para reducir el retraso de los impulsores de mercado más largos.

  3. Optimizar los parámetros del canal de negociación a 0,5 veces el canal ATR para reducir la posibilidad de negociación ruidosa.

  4. Añadir indicadores de verificación de resultados como el MACD para mejorar la fiabilidad de la señal.

Resumen de las actividades

Esta estrategia utiliza ampliamente múltiples indicadores técnicos como promedios móviles adaptativos, evaluaciones de riesgos en zigzag y análisis de volumen-precio para construir un sistema de decisión de negociación adaptativa de múltiples ciclos. A través de la optimización y ajuste de parámetros, se puede aplicar a diferentes tipos de mercados, identificando automáticamente tendencias y rangos.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true)
Length = input(10, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
Fastend = input(2)
Slowend = input(30)
nfastend = 2/(Fastend + 1)
nslowend = 2/(Slowend + 1)
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))

Length2 = input(10, minval=1)
xPrice2 = close
xvnoise2 = abs(xPrice2 - xPrice2[1])
Fastend2 = input(4)
Slowend2 = input(24)
nfastend2 = 2/(Fastend2 + 1)
nslowend2 = 2/(Slowend2 + 1)
nsignal2 = abs(xPrice2 - xPrice2[Length2])
nnoise2 = sum(xvnoise, Length2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2) 
nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1]))

price = input(hl2)
len = input(defval=7,minval=1)
FC = input(defval=4,minval=1)
SC = input(defval=300,minval=1)
len1 = len/2
w = log(2/(SC+1))
H1 = highest(high,len1)
L1 = lowest(low,len1)
N1 = (H1-L1)/len1
H2 = highest(high,len)[len1]
L2 = lowest(low,len)[len1]
N2 = (H2-L2)/len1
H3 = highest(high,len)
L3 = lowest(low,len)
N3 = (H3-L3)/len
dimen1 = (log(N1+N2)-log(N3))/log(2)
dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1]))
alpha1 = exp(w*(dimen-1))
oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1)
oldN = (2-oldalpha)/oldalpha
N = (((SC-FC)*(oldN-1))/(SC-1))+FC
alpha_ = 2/(N+1)
alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_)
out = (1-alpha)*nz(out[1]) + alpha*price

price2 = input(hl2)
len2 = input(defval=31,minval=1)
FC2 = input(defval=40,minval=1)
SC2 = input(defval=300,minval=1)
len12 = len2/2
w2 = log(2/(SC2+1))
H12 = highest(high,len12)
L12 = lowest(low,len12)
N12 = (H1-L1)/len12
H22 = highest(high,len2)[len12]
L22 = lowest(low,len2)[len12]
N22 = (H22-L22)/len12
H32 = highest(high,len2)
L32 = lowest(low,len2)
N32 = (H32-L32)/len2
dimen12 = (log(N12+N22)-log(N32))/log(2)
dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1]))
alpha12 = exp(w*(dimen2-1))
oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12)
oldN2 = (2-oldalpha2)/oldalpha2
N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2
alpha_2 = 2/(N4+1)
alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2)
out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2

tf = input(title="Resolution",  defval = "current")
vamp = input(title="VolumeMA",  defval=6)
vam = sma(volume, vamp)

up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3]
down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3]
fractalup =  up ? high[3] : fractalup[1] 
fractaldown = down ? low[3] : fractaldown[1]

fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup)
fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown)

plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false)
plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false)

buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0]
sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0]

if (buyEntry)
    strategy.entry("Buy", strategy.long, comment="Long Position Entry")


if (sellEntry)
    strategy.entry("Sell", strategy.short, comment="Short Position Entry")

Más.