Estrategia de predicción de tendencias adaptativa multiperiodo


Fecha de creación: 2024-02-01 14:34:38 Última modificación: 2024-02-01 14:34:38
Copiar: 0 Número de Visitas: 682
1
Seguir
1617
Seguidores

Estrategia de predicción de tendencias adaptativa multiperiodo

Descripción general

La estrategia utiliza un indicador de evaluación de riesgo de movimiento de medias móviles y desvíos de varios ciclos para realizar predicciones de movimiento y la salida de señales de negociación en combinación con los puntos de clasificación en el funcionamiento del mercado. La estrategia se denomina estrategia de predicción de movimiento de adaptación de varios ciclos.

Principio de estrategia

La lógica central de la estrategia es dividida en dos líneas principales: la primera línea principal consiste en utilizar diferentes parámetros para construir un sistema de juicio de filtración de múltiples períodos de la media móvil adaptativa nAMA, la segunda línea principal consiste en utilizar diferentes parámetros para construir un sistema de evaluación de riesgo de descuento out para construir un sistema de evaluación de riesgo de múltiples períodos. Finalmente, se combinan las dos líneas principales para generar una señal de compra cuando la línea de ciclo corto supera la línea de ciclo largo.

Concretamente, en la primera línea principal, se establece una media móvil adaptativa de 10 períodos y 4,24 parámetros respectivamente. En la segunda línea principal, se establece una línea de evaluación de riesgo de desviación de 7 períodos y 4,300 parámetros respectivamente. Finalmente, la línea de 10 períodos de la primera línea principal se compara con la línea de 31 períodos de la segunda línea principal para formar una combinación de transacciones.

Además, la estrategia también tiene un módulo de confirmación de precios. La señal de negociación solo es válida cuando el volumen de transacciones es mayor que el promedio de transacciones de 6 ciclos. Esto puede filtrar los falsos señales hasta cierto punto. Finalmente, la estrategia traza puntos de clasificación de diferentes niveles de ciclo como señales de referencia.

Análisis de las ventajas estratégicas

La mayor ventaja de esta estrategia reside en el uso de una estructura de adaptación a múltiples ciclos, que puede ajustarse dinámicamente según los parámetros de adaptación al funcionamiento del mercado. Tanto en los capítulos de tendencia como en las zonas de conmoción, se puede encontrar la combinación adecuada de ciclos de parámetros, lo que mejora la capacidad de captura de tendencias de la estrategia.

Además, la estrategia utiliza un sistema de evaluación de riesgo de desvío para un filtro de unión de varios ciclos, lo que permite controlar el riesgo de las operaciones de manera efectiva y evitar la creación de posiciones en la etapa de alto riesgo. Al mismo tiempo, la estrategia también establece condiciones de filtro de precio cuantitativo para evitar la generación de señales erróneas cuando la capacidad cuantitativa es insuficiente.

Análisis de riesgos estratégicos

El mayor riesgo de esta estrategia es que requiere el juicio simultáneo de varias líneas de ciclo, por lo que la capacidad de captura de los mercados de reversión a corto plazo es inferior. Cuando las líneas de ciclo corto y largo cambian al mismo tiempo, es fácil generar señales inciertas. Se puede optimizar mediante la reducción de los ciclos de parámetros.

Además, los ciclos dominantes de las medias móviles adaptativas y los sistemas de evaluación de riesgo de desviación son más cortos en comparación con el mercado mayor, y hay cierto retraso en los niveles más largos de accionamiento. Se puede extender adecuadamente el ciclo principal para reducir el retraso.

Dirección de optimización de la estrategia

  1. Reducción de los parámetros de los ciclos dominantes para adaptarse a las medias móviles y las líneas de evaluación de riesgo de la línea de desviación, cambiando a 5 ciclos y 20 ciclos, para mejorar la captura de la reversión del mercado a corto plazo.

  2. Aumentar el parámetro de ciclo de fuerza principal a 20 y 50 ciclos, reduciendo la retraso bajo el impulso del mercado a niveles más altos.

  3. Optimización de los parámetros del canal de negociación, cambiado a un canal de ATR de 0,5 veces, para reducir la posibilidad de negociación de ruido.

  4. Aumentar los indicadores de verificación de resultados, como MACD, para mejorar la fiabilidad de la señal.

Resumir

La estrategia integra la aplicación de múltiples indicadores técnicos, como las medias móviles adaptadas, la evaluación de riesgos de descuento y el análisis de precios, para construir un sistema de toma de decisiones de negociación adaptado a múltiples ciclos. A través de la optimización de los parámetros, se puede aplicar a diferentes tipos de mercados, identificar automáticamente las tendencias y las regiones. La lógica de la estrategia es clara, el valor se puede extraer y es un método de cuantificación recomendable.

Código Fuente de la Estrategia
/*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")